‘壹’ java里的List<T>接口里的subList方法,API没看懂
1,并不是发明出来的,原文就是view,就是视图的意思。
视图的概念借用了数据库的view概念。sablist返回的list和原来的list,后面的数据是同一份,所以对任何item本身的修改,会反映到另一个list。
2,因为sublist知道使用了哪个fullList,当然能够正确处理clear;反过来却不然,所以,对fullList的clear,会造成未定义的结果。
3,如果是arrayList,是你说的那样,remove的话,会把后面的数据向前串一个,然后等着回收呗;如果是link list,就是链表结构了。
‘贰’ java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!
/**
* list中有150条数据,每次只拿20条数据,直到拿完所有数据
*/
List<String> urlList = new ArrayList<String>();
for (int i = 0; i < 150; i++) {
urlList.add(i+"");
}
for(int i = 0;i < urlList.size();i+=20){
List<String> param = new ArrayList<String>();//用户存放每次获取到的二十条数据
if( i + 20 < urlList.size()){
for (int j = i; j < i + 20; j++) {
param.add(urlList.get(j));
}
}else {
for (int j = i; j < urlList.size() ; j++) {
param.add(urlList.get(j));
}
}
System.out.println("每次获取到的20条数据:" + param);
}
‘叁’ java vector中clear()与removeAllElements(),arraylist的clear()与new arraylist()有何区别
Vector
clear():从此Vector中删除所有元素,此调用返回后,Vector将为空。
removeAllElements():从该向量中删除所有组件,并将其大小设置为零(该方法的功能与clear()方法相同(它是List接口的一部分))。
Arraylist
clear():从列表中删除所有元素,返回列表将为空(之前引用的地址都被清空)。
new arraylist():初始化List,得到一个新的空List(之前引用的地址不会被清空)。
‘肆’ JAVA中的List的使用
List<E>([]内的内容可省略),与数组类似:
实例化:List[<数据类型>] list = new ArrayList[<数据类型>]();
获得集合内元素个数:list.size();
添加元素:
默认添加:list.add(e);
指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e);
删除元素:
返回是否删除:list.remove(e);
直接删除指定下标的元素(只删除找到的第一个相符合的元素):list.remove(index);
替换元素(替换掉指定下标的元素):list.set(index,e);
取出元素:list.get(index);
清空集合:list.clear();
判断集合中是否存在某个元素(存在返回true,不存在返回false):list.contains(e);
对比两个集合中的所有元素:
两个对象一定相等:list.equals(list2);
两个对象不一定相等:list.hashCode() == list2.hashCode();
(两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。)
获得元素下标:
元素存在则返回找到的第一个元素的下标,不存在则返回-1:list.indexOf(e);
元素存在则返回找到的最后一个元素的下标,不存在则返回-1:list.lastIndexOf(e);
判断集合是否为空(空则返回true,非空则返回false):list.isEmpty();
返回Iterator集合对象:list.iterator();
将集合转换为字符串:list.toString();
截取集合(从fromIndex开始在toIndex前结束,[fromIndex,toIndex)):list.subList(fromIndex,toIndex);
将集合转换为数组:
默认类型:list.toArray();
指定类型(objects为指定类型的数组对象,并将转换好的数组赋值给objects数组):list.toArray(objects);
以上为List常用的方法。
‘伍’ java list<object>如何去重
List<String>list=newArrayList<>();
/*list.add("abc");
list.add("abc");
list.add("def");
list.add("bcd");*/
Set<String>set=newLinkedHashSet<>();//这种方式保证去重后的元素相对位置不变
//Set<String>set=newHashSet<>();//这种方式去重后元素的位置很有可能变化了
set.addAll(list);
list.clear();
list.addAll(set);
for(Strings:list){
System.out.println(s);
}
整个思路就是利用set中的元素是不重复的,来达到去重的目的