Java里一共有三大集合,分别是list集合、Set集合、Map集合,每个集合都有各自的特点,也提供各自独特的方法,下面是我对这三个集合的一些总结。
一、 List集合
List 本身是 Collection 接口的子接口,具备了 Collection 的所有方法。现在学习 List 体系特有的共性方 法,查阅方法发现 List 的特有方法都有索引,这是该集合最大的特点。
List :有序 (元素存入集合的顺序和取出的顺序一致 ),元素都有索引,List集合默认按元素的添加顺序设置元素的索引。元素可以重复。
下面是对List集合的一些方法的使用的介绍以及运行结果
在进行 list 列表元素迭代的时候,如果想要在迭代过程中,想要对元素进行操作的时候,比如满足条件添 加新元素。 会发生 .ConcurrentModificationException 并发修改异常。
导致的原因是: 集合引用和迭代器引用在同时操作元素, 通过集合获取到对应的迭代器后, 在迭代中, 进行集合引用的元素 添加,迭代器并不知道,所以会出现异常情况。
解决方法:既然是在迭代中对元素进行操作 , 找迭代器的方法最为合适 . 可是 Iterator 中只有 hasNext,next,remove 方 法. 通过查阅的它的子接口 , ListIterator , 发现该列表迭代器接口具备了对元素的增、删、改、查的动作。
ListIterator 是 List 集合特有的迭代器 。
ListIterator it = list.listIterator;// 取代 Iterator it = list.iterator;
运行结果
二、 Set 集合
Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能包含重复的对象。Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含Collection接口的所有方法。
Set接口常用的实现类有HashSet类与TreeSet类
1、 HashSet类实现Set接口,由哈希表支持,它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变,此类允许使用null元素。
2、 TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。
下面是Set接口常用的方法和运行结果
运行结果:
三、 Map 集合
Map集合没有继承Collection接口,其提供的是Key到Value的映射。Map中不能包含相同的key,每个key只能映射一个value。Key还决定了存储对象在映射中的存储位置,但不是由key对象本身决定的,而是通过“散列技术”进行处理,产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象映射中的存储位置。Map包括Map接口以及Map接口的所有实现类。
运行结果: