天天看点

Java集合框架11:Set集合(HashSet集合)

Set集合概述及特点

Set集合五索引、不可以重复、无序(存取不一致)。

已知实现类

AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet 。

案例演示

(1)HashSet存储字符串并遍历。

package set;
import java.util.HashSet;
public class Demo1_HashSet {
     public static void main(String[] args) {
          HashSet<String> hs = new HashSet<>();//创建HashSet对象
          boolean b1 = hs.add("a");
          boolean b2 = hs.add("a");             //当向set集合中存储重复元素的时候返回为false
          System.out.println(b1);
          System.out.println(b2);
          
          hs.add("b");
          hs.add("c");
          hs.add("d");
          
          for(String string : hs) {         //只要能用迭代器的,就可以使用增强for循环遍历
              System.out.println(string);
          }
     }
}
           

运行结果如下:

Java集合框架11:Set集合(HashSet集合)

(2)HashSet存储自定义对象保证元素唯一性

package set;

import java.util.HashSet;

public class Demo2_HashSet {
	
	public static void main(String[] args) {
		HashSet<Person> hs = new HashSet<>();
		hs.add(new Person("张三",23));
		hs.add(new Person("张三",23));
		hs.add(new Person("李四",24));
		hs.add(new Person("李四",24));
		hs.add(new Person("李四",24));
		hs.add(new Person("李四",24));
		System.out.println(hs.size());
		
		System.out.println(hs);
	}
}

           
package set;

public class Student {
	private String name;
	private int chinese;
	private int math;
	private int english;
	private int sum;
	
	public Student() {
		super();
	}

	public Student(String name, int chinese, int math, int english) {
		super();
		this.name = name;
		this.chinese = chinese;
		this.math = math;
		this.english = english;
		this.sum = this.chinese + this.math + this.english;
	}

	public int getSum() {
		return sum;
	}
	
	public String toString() {
		return name + "," + chinese + "," + math + "," + english + "," + sum; 
	}
}

           

运行结果如下:

Java集合框架11:Set集合(HashSet集合)