list.addAll
list.addAll(list);// 向集合追加一个collection,只可追加collection,由于java不提供collection的实现,由它的下级接口来实现
list.addAll(4, list);// 与上述含义相同, “4”意为追加元素所放的位置
list.subList()
list.subList(1,3)//返回下标从1到3的数据 ,包括左不包括右 即返回下标为1,2的数据
list.indexOf()
//在集合中查找元素 ,"a"如果有 ,返回所查找元素的下标,如果不存在则返回-1
list.indexOf("a");
list.clear()
list.clear();// 调用clear方法清空集合中的所有数据
list.equals(list2)
//该方法去比较两个对象时,首先先去判断两个对象是否具有相同的地址,如果是同一个对象的引用,则直接放回true;如果地址不一样,
//则证明不是引用同一个对象,接下来就是挨个去比较两个字符串对象的内容是否一致,完全相等返回true,否则false。
list.equals(arr);//false
list.isEmpty
有没有瓶子 list != null
瓶子里有没有水 list.isEmpty()
判断的时候一定要注意先后顺序 如果没有瓶子都没有,直接判断有没有水,是会报nullException的
list.add(null)会造成list.isEmpty() 为false,但是list.size()为1, 所以代码里要避免list.add(null)的陷阱 。
list==null,它其实是根本没有在堆内是不存在的,没有存储的地址。但是list.size()=0是已经存在地址,但是并没有存相应的元素,当元素的数量增加是,size随之变化。
null说明了没有进行初始化,此时要是调用任何的方法的话都会抛出空指针异常,而list.size()==0表示此list已经new过,但是其中没有存入任何值。
isEmpty先获取size的值在判断再返回,list.size则是直接返回属性size的值,相对isEmpty较快。看源码:
public boolean isEmpty() {
return size == 0;
}
List定义时添加多条数据
List<Integer> requiredCol = new ArrayList<Integer>() {{ add(1);add(2);add(3);add(4); }};
list.remove(i)
list.remove(i);//移除指定位置数据
Stream操作List
List取出对象中某一属性
List<String> ids=list.stream().map(User::getId).collect(Collectors.toList());
List,将id属性逗号拼接
String str = List.stream().map(User::getId).collect(Collectors.joining(","));
List,将id属性逗号拼接后转换为Strnig类型
String str = List.stream().map(Restriction::getId).collect(Collectors.toList()).stream().map(w->w.toString()).collect(Collectors.joining(","));
List转换为Map
Map<Integer, String> result1= list.stream().collect( Collectors.toMap(User::getId, Hosting::getName));