1、集合中不能存储基本数据类型,也不能直接存储Java对象,只能存储java对象的内存地址。
2、Collection常用方法
- boolean add(Object o) 向集合中添加元素
- int size() 获取集合中的元素个数
- void clear() 清空集合
- boolean contains(Object o) 判断集合中是否包含元素,包含true
- boolean remove(Object o) 删除集合中的某个元素
- boolean isEmpty() 判断集合中个数是否为0
- Object[] toArray() 将集合转换为数组 再遍历数组
Collection c = new ArrayList();
c.add(123);
c.size();
3、集合遍历/迭代
Iterator it = c.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
4、集合结构发生改变,迭代器必须重新获取
在阿里开发规范上也有不要在foreach循环里进行remove/add操作,删除元素请使用Iterator中的remove方法,不要使用集合的remove方法,如果是并发操作,需要对Iterator对象进行加锁。
Collection c = new ArrayList();
c.add(123);
c.add("abc");
c.add("def");
Iterator it = c.iterator();
while(it.hasNext()){
Object o = it.next();
c.remove(o);//错误使用集合删除,迭代器机结构发生改变 出现ConcurrentModificationException异常
it.remove();//正确 使用迭代器删除 删除迭代器指向的当前元素
System.out.println(o);
}
5、去除重复元素的两种方法
1、创建一个空容器,如果空容器中不contains该元素,就将该元素添加
2、使用Set去重 addAll() 批量添加。
//遍历后判断赋给另一个list集合
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
List<String> newList = new ArrayList<String>();
for (String cd:list) {
if(!newList.contains(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}
//set去重
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
System.out.println( "去重后的集合: " + newList);
}