JAVA集合三:几种Set框架

参考链接:

HOW2J.CN

HashSet简单讲解

HashSet

HashSet与C++STL中Set基本类似,具有的特点便是:

  1. 集合中元素不可重复
  2. 集合中元素顺序 ≠ 插入顺序
常用方法 功能
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

原文地址:https://www.cnblogs.com/theory/p/11884320.html