天天看點

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集合)