java中的Set接口
set是Collection的子接口;
set接口容器类中的元素是没有顺序的,且不能重复;
set容器类有HashSet,TreeSet等。
TestSet1.java
import java.util.*; //Set方法举例1 public class TestSet1 { public static void main(String[] args) { Set s = new HashSet(); s.add("hello"); s.add("world"); s.add(new Name("f1","l1")); s.add(new Integer(100)); s.add(new Name("f1","l1"));//相同的元素不会被加入 s.add("hello"); System.out.println(s);//[world, 100, hello, f1 l1] } } class Name /*implements Comparable*/ { private String firstName,lastName; public Name(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public String toString() { return firstName + " " + lastName; } /** * 重写equals方法 */ public boolean equals(Object obj) { if (obj instanceof Name) { Name name = (Name) obj; return (firstName.equals(name.firstName)) && (lastName.equals(name.lastName)); } return super.equals(obj); } /** * 重写hashCode方法 */ public int hashCode() { return firstName.hashCode(); } }
F:\java>javac TestSet1.java 注: TestSet1.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 F:\java>java TestSet1 [world, 100, hello, f1 l1] F:\java>
TestSet2.java
import java.util.*; //Set方法举例1 public class TestSet2 { public static void main(String[] args) { Set s1 = new HashSet(); Set s2 = new HashSet(); s1.add("a"); s1.add("b"); s1.add("c"); s2.add("d"); s2.add("a"); s2.add("b"); //Set和List都具有Constructor(Collection c) //构造方法用于初始化容器类 Set sn = new HashSet(s1);//赋值 sn.retainAll(s2);//求交集 System.out.println(sn);//[a, b] Set su = new HashSet(s1);//赋值 su.addAll(s2);//求交集 System.out.println(su);//[a, b, c, d] } }
F:\java>javac TestSet2.java 注: TestSet2.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 F:\java>java TestSet2 [a, b] [a, b, c, d] F:\java>