面试题-List和Set的区别

上周末面试被问到List和Set的区别,支支吾吾答不上(之前没有用过Set,学过却忘了),写个文章补一下。

本来想直接写一篇文章复习整个Collection Framework的,后来发现要写完可以变成一本书……(其实是水平不够)

Set:
一个不包含重复元素的 collection。
更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。

事实上最常用的Set接口的实现类HashSet,底层是使用HashMap实现的,元素是HashMap的Key,而Value是一个私有的静态的Object对象。

HashSet有一个addAll方法,可以用来给ArrayList去重(阿里代码规约也有提到):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {  
Set set=new HashSet();
set.add("字符串1");
set.add("字符串1");
set.add("字符串1");
set.add("字符串2");
set.add("字符串3");
System.out.println("size="+ set.size()); //3

List list = new ArrayList();
list.add("字符串1");
list.add("字符串4");
list.add("字符串5");
set.addAll(list);
System.out.println("size="+ set.size() ); //5

for(String s:set) {
System.out.println(s);
}
}
作者

Mother Ship

发布于

2018-04-16

更新于

2023-02-13

许可协议

评论