今天我们来说一下Java中常用的集合类型。
面试时经常从Java的基础知识开始,最基础的部分莫过于Java的集合类型。我们知道Java的集合类型有三种,Set,List,Map,那这三种有什么区别呢。
List是我们用的最多的类型,它的特点是按次序存储,比如我们从1-10存入10个数,那么用 iteractor()来遍历的话也会是从1-10排列。
Set比较特殊,它也可以认为是一种列表,然而它并不保存重复数据。像下面这段代码
Set set=new HashSet();
String s1=new String("hello");
String s2=s1;
String s3=new String("world");
set.add(s1);
set.add(s2);
set.add(s3);
set的长度其实是2,因为s2和s1的值相同,所以不继续存放新值。 有兴趣的同学可以看HashSet的add的实现方法,会发现它实际上是把存放的元素作为key,来存放到一个HashMap中的,如果我们重复放两个相同的元素,因为哈希值相同,对于HashMap来说会认为是同一个key,因此不会新增key来存放数据。
Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。 Map没有继承于Collection接口,一般的读取得通过key值来获取对应的数据。
List和Set都是实现了Collection的集合类型,不同处是List可以存放重复数据,而Set不同。 Map没有实现Collection接口,它对数据的读写都是基于key来进行的。
对于数据的存放,List是顺序存放,而Set和Map默认都不关心存放顺序,因此若想按顺序存放,则需要用LinkHashSet或者LinkHashMap。