参考链接:
HashSet
HashSet与C++STL中Set基本类似,具有的特点便是:
- 集合中元素不可重复
- 集合中元素顺序 ≠ 插入顺序
常用方法 | 功能 |
---|---|
add | 向集合中添加元素 |
clear | 清空集合 |
remove | 删除集合中指定元素 |
contains | 查看是否包含某个元素 |
size | 集合中元素的数量 |
package blog;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<Integer>();
int[] data = {1,2,3,2,1,2,4,6,3,1,3,8,9,4,23,2};
//筛除data中的重复元素
for(int i = 0; i < data.length; i++) {
set.add(data[i]);
}
//遍历集合
for(Integer i : set) {
System.out.print(i+" ");
}
}
}
运行结果如下(顺序并不是加入集合的顺序):
1 2 3 4 6 23 8 9
LinkedHashSet 与 TreeSet
LinkedHashSet、TreeSet操作与HashSet基本无二,但是LinkedHashSet使得集合中的元素按照插入的顺序排列,而TreeSet使得集合中的元素按照大小顺序排列
package blog;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<Integer>();
LinkedHashSet<Integer> linkSet = new LinkedHashSet<Integer>();
TreeSet<Integer> treeSet = new TreeSet<Integer>();
int[] data = {1,2,3,2,1,2,4,6,3,1,3,8,9,4,23,2,14,16,15};
//筛除data中的重复元素
for(int i = 0; i < data.length; i++) {
int temp = data[i];
set.add(temp);
linkSet.add(temp);
treeSet.add(temp);
}
//遍历集合
for(Integer i : set) {
System.out.print(i+" ");
}
System.out.println();
for(Integer i : linkSet) {
System.out.print(i+" ");
}
System.out.println();
for(Integer i : treeSet) {
System.out.print(i+" ");
}
}
}
三个集合的遍历结果如下(从上到下依次是HashSet、LinkedSet、TreeSet):
16 1 2 3 4 6 23 8 9 14 15
1 2 3 4 6 8 9 23 14 16 15
1 2 3 4 6 8 9 14 15 16 23