List、Map和Set都是集合,可以用来存储数据。
首先,List与Set具有相似性,它们都是单列元素的集合,它们有一个共同的父接口Collection。Set里面不允许有重复的元素,即不能有两个相等的对象,即假设Set中有了一个A对象,现在要存入一个B对象,如果B与A对象equals相等,则B存不进去。Set集合的add方法(即添加对象时)有一个boolean的返回值,当集合中没有某个元素时,此时add方法可以成功加入该元素,则返回true,当集合中含有与某个元素equals相等的元素时,此时的add方法无法加入该元素,返回false。Set集合是无序的,无法单独取出第几个元素,只能以Iterator接口取得所有元素后,再逐一遍历。
来源网络
List集合是有序的,可以对其中每个元素的插入位置进行精确地控制,通过索引来访问元素,遍历元素。常用地主要有ArrayList和LinkedList这两个类。
其中ArrayList底层是通过数组实现,随着元素的增加而动态扩容;而LinkedList底层是通过链表实现,随着元素的增加不断向链表的后端增加节点。
List的特点:
1.可以允许重复的对象。
2.可以插入多个null元素。
3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问,而 LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适。
Map与List和Set不同,它是双列的结合,存储的是键值对。Map接口主要有两个实现类:HashMap和TreeMap,其中,HashMap是按哈希算法来存取键对象,而TreeMap可以对键对象进行排序。
Map用put方法来存储键值对,每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按照equals比较相等。取值则可以通过建来取出对应的值,即get(Obeject key)返回值为key对应的value值。