两大框架图解
Collection 接口
由第一张图, 我们可以知道, Collection 接口的子接口有三种, 分别是 List 接口, Set 接口和 Queue 接口
List 接口
允许有重复的元素, 元素按照添加的顺序进行排序
接口方法
void add(int index,Objext o)
在集合的指定位置插入元素
Object get(int index)
返回集合中某个指定位置的元素
int indexOf(Object o)
返回第一次出现该元素的索引(下标), 如果不包含此元素, 返回 - 1
int lastIndexOf(Object o)
返回最后一次出现该元素的索引(下标), 如果不包含此元素, 返回 - 1
Object remove(int index)
移除集合某个索引的元素
Object set(int index,Object o)
用指定的元素替换集合中某个指定下标的数据元素
接口实现类的使用
ArrayList
新增方法:
- addFirst
- getFirst
- removeFirst
- addLast
- getLast
- removeLast
特点: 在存储方式上是采用数组进行顺序存储
List list = new ArrayList();
List < 泛型> list = new ArrayList<>();
LinkedList
特点: 在存储方式上是采用链表进行链式存储
LinkedList<> list = new LinkedList<>();
PS: 由于 ArrayList 是采用数组进行存储的, 所以添加元素或者是删除元素时, 需要批量移动元素, 所以性能较差. 但查询元素的时候, 可以通过下标直接进行访问, 所以遍历元素或随机访问元素的时候效率高.
而 LinkedList 与 ArrayList 相反
Set 接口
不允许有重复的元素, 元素没有顺序
接口方法
add clear contains remove
和之前的 List 差不多, 这里就不多说
接口实现类的使用
HashSet
下面的图片很明显, 体现了没有重复元素的规则
一般使用的话还是使用泛型使用
- Set<Book> books = new HashSet<>();
- TreeSet
由之前介绍的第四张图可以看到, TreeSet 既继承了 Set 接口, 也继承了 SortedSet 接口(排序接口)
没有使用泛型, 默认使用的是 String 类型, String 类实现了 Comparable 接口, 默认是按字典排序, 但是图中明显没有实现排序? 不理解..
我使用英文开头, 才能实现排序
Set 集合遍历
- //Iterator
- Iterator iterator = set.iterator();
- while (iterator.hasNext()){
- System.out.println(iterator.next());
- }
- //foreach
- for (String s:set) {
- System.out.println(s);
- }
Queue 接口
较少使用..
Map 接口
使用键值对 (key value) 进行数据存储, key 与 value 是一种映射关系
接口方法
Object put(Object key,Object value)
将一个键值对存到 Map 中
Object get(Object key)
由 key 获得 value
Object remove(Object key)
删除该键值对
Set keyset() 返回当前包含当前 map 的所有 key 的 Set 集合
Collection values()
返回当前包含当前 map 的所有 value 的 Collection 集合
boolean containsKey(Object key)
是否包含某个 key
boolean containsValue(Object Value)
是否包含某个 Value
int size() 返回当前 map 集合键值对的个数
接口实现类的使用
HashMap 的使用
- Map<String,String> map = new HashMap<>();
- Map<Integer,String> map = new HashMap<>();
PS: 一般在开头声明键值对的类型, 如果在后面声明的话, 很大可能会报错
TreeMap 的使用
Map<String,String> map = new TreeMap<>();
与之前的 TreeSet 一样, TreeMap 也是实现了 SortedMap 借口, 带有排序, 默认是按照 key 的数值自然排序(也就是升序)
来源: https://www.cnblogs.com/kexing/p/10155368.html