Set擁有與Collection完全相同的接口
Set(接口) 添加到Set的每個元素都必須是獨一無二的
HashSet* 用於除非常小的以外的所有Set
ArraySet 由一個數組後推得到的Set
TreeSet 由一個
⑦
下面這個例子並沒有列出用一個Set能夠做的全部事情
//: Set
// Things you can do with Sets
package c
import java
public class Set
public static void testVisual(Set a) {
Collection
Collection
Collection
Collection
// Add another set to this one:
a
a
a
a
Collection
// Look something up:
System
ntains(
}
public static void main(String[] args) {
testVisual(new HashSet());
testVisual(new TreeSet());
}
} ///:~
重復的值被添加到Set
運行這個程序時
//: Set
// Putting your own type in a Set
package c
import java
class MyType implements Comparable {
private int i;
public MyType(int n) { i = n; }
public boolean equals(Object o) {
return
(o instanceof MyType)
&& (i == ((MyType)o)
}
public int hashCode() { return i; }
public String toString() { return i +
public int compareTo(Object o) {
int i
return (i
}
}
public class Set2 {
public static Set fill(Set a, int size) {
for(int i = 0; i < size; i++)
a.add(new MyType(i));
return a;
}
public static Set fill(Set a) {
return fill(a, 10);
}
public static void test(Set a) {
fill(a);
fill(a); // Try to add duplicates
fill(a);
a.addAll(fill(new TreeSet()));
System.out.println(a);
}
public static void main(String[] args) {
test(new HashSet());
test(new TreeSet());
}
} ///:~
對equals()及hashCode()的定義遵照“groundhog”例子已經給出的形式。tW.WinGWit.cOm在兩種情況下都必須定義一個equals()。但只有要把類置入一個HashSet的前提下,才有必要使用hashCode()——這種情況是完全有可能的,因為通常應先選擇作為一個Set實現。
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19723.html