Java集合之Set

文章目录


一、Set是什么?

Public interface Set <E> 

<E> 表示的泛型 -----容器中存放的元素的类型 —指代的是引用数据类型
基本数据类型不能当作泛型来使用,而是要使用基本数据类型的封装类
Java集合之Set

Set的特点

不能存在重复的元素(hashcode相同的元素叫重复的元素)
元素添加没有顺序

二、HashSet

1.HashSet特点

  1. 不能存在重复元素
  2. 底层结构是哈希表(HashTable)
  3. 无序----无索引
  4. 可以存放null元素
  5. 牺牲空间换时间 (桶)----运行速度较快
  6. 扩容和加载因子 需要根据hashMap的原理来决定

2.HashSet常用方法

addAll() -----并集
containsAll()-----子集
removeAll() -----差集
retainAll() ------交集

例题

String score[] s =
{“A,语文,98”,“B,数学,87”,“B,英语,56”
“C,语文,66” “G,数学,90”}
name[“A“ B C D E F G]
问哪些人没有参加考试

public class SetPr {
    public static void main(String[] args) {

        String [] score = {"A,语文,98","B,数学,87","B,英语,56","C,语文,66","G,数学,90"};
        String [] name = {"A","B","C","D","E","F","G"};

        Set<Character> s1 = new HashSet<Character>();
        Set<Character> s2 = new HashSet<Character>();

        for (int i = 0; i < name.length; i++)//添加元素
            s1.add(name[i].charAt(0));

        for (int i = 0; i < score.length; i++)
            s2.add(score[i].charAt(0));

        s1.removeAll(s2);//求有成绩的和所有人求差集,求出来的即是没有来考试的
        Iterator<Character> iterator = s1.iterator();

        while (iterator.hasNext())
            System.out.println(iterator.next() + "没来考试!!!");

    }
}

Java集合之Set

TreeSet

1.TreeSet的特点

  1. 底层结构是二叉树结构
  2. 二叉树认为能够存放在树形结构中的元素都是有序元素
  3. 不允许存放重复的元素
    用法与HasSet基本类似
public class TreeSetTest {	
	public static void main(String[] args) {	
			Set<Integer> set = new TreeSet<Integer>();
			set.add(7);
			set.add(2);
			set.add(3);
			set.add(6);
			set.add(5);
			set.add(0);
			set.add(0);
			System.out.println(set);				
	}
}

Java集合之Set

上一篇:ysoserial CommonsColletions6分析


下一篇:【LeetCode】 哈希集 - 用法 C++