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()
        返回此集合中的元素数(其基数)。*/
    }
}

  

posted on 2021-01-14 14:27  没入门就放弃  阅读(176)  评论(0编辑  收藏  举报