List等接口的实现子类有很多,仅列出常用的。
(Collection为接口,不能直接实例化,需要类实现接口)
如果是Collection接口,可以用迭代器和增强for循环两种方式遍历,如果是List接口的子类还能用普通for
① 使用Iterator
(迭代器)
迭代器原理:
示例:
② 使用 增强for循环
示例:
③普通for循环
List集合的元素有序、可重复、有索引(0开始)
多线程时更适合用Vector,其是线程安全的
说明
LinkedList的底层操作机制
添加删除操作效率更高,不是通过数组扩容
添加和取出的顺序不一样,但取出的顺序是固定的,即每次运行都是固定顺序
实例:
①说明
②HashSet扩容机制
底层机制简要说明:
Set接口实现类—LinkedHashSet
说明:(有序,插入取出顺序一样,但插入表时不规律存储)、不重复)
底层源码解读:
Map接口常用方法
key相同,value不同时,新value替代旧value
Map语法
1、添加元素 .put
map.put(key,value);
2、通过get()方法获取key对应的value
map.get("not")
解析:
1、(少使用)
2、通过迭代器获取所有键(key),再通过map.get(key)
遍历键来获取值 ⭐️
3、通过迭代/循环 EntrySet来获取K-V
4、直接获取所有值(value),再遍历
每种Map遍历方式中又包含可用增强for和迭代器两种遍历的方法.
小结:
基本介绍
扩容机制:
基本介绍
常用基本方法:
增\删\改\查(获取值)
List中:增删多:双链表增删更快; 改查多:通过数组的索引定位比较快;
插入和取出顺一致,但存储时是无序存储的;
TreeSet具备实现了Comparator接口的compare()方法,重写compare()方法可以自定义排序规则,对Integer类型数据存储顺序默认按数字从小到大排序,字母默认按从a-z排序.
TreeMap类似TreeSet,只是实现了compareable接口的compareTo()方法
介绍
例: