[图片]
Collection是单列集合的根接口:
List和Set分别是它的两个子接口,
List集合(可以存放有序存和取的顺序一样)
有索引,可以存储重复的数据:
List下有三个子类;
ArrayList..底层是由数组实现
是线程非安全的,查询和修改快,增删慢
有索引,所以查找快.
增加或删除数据时候,需要将增加位置后的数据整体向后或向前移动
比较慢;
LinkedList 底层是链表实现
线程是非安全的,增删快 查找和修改慢.
因为LinkedList 没有索引,只能从集合开始或结束的位置查询,得到元素;
Vector 底层是数组实现,无论增删改查都慢.
如果查修多,就用ArrayList.
如果增删多,就用LinkedList.
如果都多,用Arraylist.
List特有的迭代方式:get(int index) size();
特有的迭代方式:listIterator. 可以增加和删除元素;
Set集合:存储和取出没有顺序,不可重复,没有索引
HashSet:底层是哈希算法实现,HashSet集合是Set集合的一个分支,是Set接口的一个实现类.它所存储的元素是不可重复的,并且元素都是无序的.当向HashSet集合中添加一个对象时,首先会调用改对象的hashCode()方法来确定元素的存储位置,然后在调用对象的equals()方法来确保该位置没有重复的元素.
[图片]
[图片]
TreeSet:底层是二叉树算法,这样的算法可以保证TreeSet集合中没有重复的元素,并且可以对元素排序,
Map是双列集合的根接口;
HashMap集合是Map节后的一个实现类,它用于存储键值映射关系,但必须保证不出现重复的键.底层是哈希算法,针对键,Map中的键是唯一的,如果存储了两个相同键,后存储的值会覆盖前面的值,就是"键相同,值覆盖",
LinkdeHashMap是HashMap的一个子类,底层是链表,针对键,HashMap集合迭代出来元素的顺序和存入的顺序是不一样的,LinkedHashMap可以使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致,
TreeMap是Map接口的另一个实现类, 通过二叉树原理来保证键的唯一性,和TreeSet集合存储原理一样,按照某种顺序排列的
遍历Map集合的方法,
KeySet();通过获取所有的键值,通过遍历得到键所对应的value值,
entrySet()方法
这个方法就是获取所有Map集合中的键值对对象,然后对其遍历,获取集合键和所对应的value对象; |