Set
HashSet
package collection; /** * @author fkl * @date 2021/1/14 10:35 **/ public class A implements Cloneable { public String name; /* public String name[];*/ public Object clone() { A o = null; try { o = (A) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return o; } /* 当Class A成员变量类型是java的基本类型时(外加String类型),只要实现如上简单的clone(称影子clone)就可以。 但是如果Class A成员变量是数组或复杂类型时,就必须实现深度clone。*/ /* public Object clone() { A o = null; try { o = (A) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } o.name = new String[2];// 其实也很简单^_^ return o; }*/ }
package collection; import org.junit.Test; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * @author fkl * @date 2020/12/30 9:36 **/ public class Setss { @Test public void hashSet() { Set<String> set = new HashSet<>(); //将指定的元素添加到此集合 set.add("s2"); set.add("s3"); set.add("s4"); set.add("s2"); set.add("s5"); set.add("s1"); set.add(null); for (String i : set) { System.out.println(i); } System.out.println(set); /* clear() 从此集合中删除所有元素。*/ /* clone() 返回此 HashSet实例的浅层副本:元素本身不被克隆。*/ //克隆前 A a1=new A(); A a2=new A(); a1.name="a1"; a2=a1; a2.name="a2"; System.out.println("克隆前a1和a2变成了同一个引用地址"); System.out.println(a1.hashCode()); System.out.println(a2.hashCode()); System.out.println("a1.name="+a1.name); System.out.println("a2.name="+a2.name); //克隆后 a1.name = "a1"; a2 = (A)a1.clone(); a2.name = "a2"; System.out.println("克隆后a2值得改变并不会影响a1,因为引用的地址不是同一个"); System.out.println("克隆后a1:"+a1.hashCode()); System.out.println("克隆后a1:"+a2.hashCode()); System.out.println("克隆后a1.name=" + a1.name); System.out.println("克隆后a1a2.name=" + a2.name); /*contains(Object o) 如果此集合包含指定的元素,则返回 true 。*/ /*isEmpty() 如果此集合不包含元素,则返回 true 。*/ /* iterator() 返回此集合中元素的迭代器。 (2) 使用next()获得序列中的下一个元素。 (3) 使用hasNext()检查序列中是否还有元素。 (4) 使用remove()将迭代器新返回的元素删除。 */ for (Iterator<String> iter = set.iterator(); iter.hasNext();) { String str = iter.next(); System.out.println("Iterator:"+str); } Iterator<String> iter = set.iterator(); while (iter.hasNext()){ String str = iter.next(); System.out.println("Iterator while:"+str); } /* remove(Object o) 如果存在,则从该集合中删除指定的元素。*/ /* size() 返回此集合中的元素数(其基数)。*/ } }