单列集合(Collection)
Collection常用方法:add clear contains isEmpty remove size toArray addAll containsAll removeAll
注意:get是List接口的方法 不是collection的 set没有get方法 只能通过迭代器来获取
//迭代器的作用:获取集合中的所有的元素
Collection coll = new ArrayList();
coll.add("jack");
coll.add("rose");
coll.add(10);
coll.add(20.2);
//1、获取迭代器对象
Iterator it = coll.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
System.out.println(coll);
迭代器常见问题:
- 1、迭代器迭代完成之后,迭代器的位置在最后一位。 所以迭代器只能迭代一次
- 2、迭代器在迭代的时候,不要调用多次next方法,可能会出错 NoSuchElementException
- 3、在迭代器迭代的时候,不能向集合中添加或者删除元素 ConcurrentModificationException
迭代器有三个方法:
hasnext 判断迭代器是否有下一个元素
next 返回当前光标的元素并将光标后移
remove 移除当前迭代器的对应元素
ArrayList
ArrayList Vector和LinkedList区别:
ArrayList和Vector是数组实现 LinkedList是双向链表 ArrayList线程不安全 效率高 当第一次add时才会创建数组 Vector线程安全 但是效率低 创建对象时就会创建数组
HashSet
底层就是HashMap 去重原理和HashMap一样:先比较hash 一样再通过equals比较
TreeSet
通过比较器来实现去重和排序 所以TreeSet必须实现Comparable接口
Collections工具类
Collections.reverse(List<?> list) 将list元素反转 Collections.shuffle(List<?> list) 将list元素随机打乱
Collections.sort(List<?> list) 将集合元素排序
MAP
Hashtable是线程安全的 HashMap线程不安全 Hashtable中不允许存储null为key-value Hashmap允许
实际开发一般都用HashMap 考虑线程安全用ConCurrentHashMap