集合和数组的区别:

常用集合的分类:
Iterator
├Collection:集合层次结构中的根接口(单列接口,用来存储一个一个的对象)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类,链表,插入删除,没有同步,线程不安全
│—————-├ ArrayList 接口实现类,数组,随机访问,没有同步,线程不安全
│—————-├ Vector 接口实现类 数组,同步,线程安全
│ ———————-├ Stack 是Vector类的实现类
├——-Set 接口: 仅接收一次,不可重复并做内部排序
│—————├ SortedSet接口:得到集合子集视图
│————————├ NavigableSet接口:搜索和遍历有序集(treeSet实现)
│—————├HashSet 使用hash表(数组)存储元素
│———————├ LinkedHashSet 链表维护元素的插入次序
└ —————├ TreeSet 底层实现为二叉树,元素排好序
├——-Queue接口:先进先出
│—————-├ Deque接口
│—————-├ ArrayDeque:
Map 接口 键值对的集合 (双列集合)—-(不需要迭代器)
├———├SorttedMap接口:得到集合子集视图
├——————–├NavigableMap接口:搜索和遍历有序映射(treeMap实现)
├———├ Hashtable 接口实现类, 同步, 线程安全
├———├ HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap
Collection接口:
实现自己的集合类:
Iterator迭代器:

ListIterator:Iterator的子接口
ListIterator<String> listIterator = list.listIterator(3);- 设置迭代器光标索引位置
迭代器—-循环遍历
//方式一:for(int i=0;i<coll.size(); i++){}--->不建议//方式二:while(iterator.hasNext()){System.out.print(iterator.next()+"\t");}//方式三:for(Object obj : coll){System.out.print(obj+"\t");}//方式四:将剩余元素输出L.iterator().forEachRemaining(arr-> System.out.println(arr));//方式五:L.forEach(System.out::println);
注意:
- 调用next方法,访问下一个元素;到集合的末尾会抛异常NoSuchElementException
- 当调用next时,迭代器会越过下一个元素,并返回刚越过的元素
- 在调用next方法之前先调用hasnext();
- remove()方法将会删除上次调用next方法时返回的元素
- 如果调用remove之前没有调用next是不合法的
- 如果删除相邻的两个元素,必须调用next(即不能连续调用两次remove)
迭代器在遍历元素时需要注意的事项:
一、在迭代元素的过程中,不允许使用集合对象改变集合中元素的个数.
二、如果需要添加或者删除,只能使用迭代器里面的方法进行操作.
三、如果使用了集合对象改变了集合中元素的个数,那么就会报:ConcurrentModificationException异常;
- 集合Collection(List、Set[equals、hashcode])中存储的如果是自定义对象
- 重写equals方法
- 传递集合要不传递迭代器好
asList、Collection
- Arrays.asList(); 返回一个视图对象,使用toArray转数值
- 不是ArrayList集合,所以只能get和set,不能改变数组大小
Integer[] integers = new Integer[10];
ist<Integer> list = Arrays._asList_(integers);List<String> list = Arrays._asList_("a","qw","234");
- 创建包含10个字符串的List,Collections返回的是集合
List<String> strings = Collections.nCopies(10, "12");
- collections:实现了许多算法排序、求最值
子范围
list.subList(10,20);类似String的substring- 对于有序集和映射集
- subSet(from,to);、subMap(from,to);
- headSet(to);、headMap(to);
- tailSet(to); 、tailMapto);

