栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java set接口注意项总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java set接口注意项总结

Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方
法基本一致。

并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。

与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不
出现重复。

Set接口主要有两个实现类,分别是HashSet和TreeSet。

其中,HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此
具有良好的存取和查找性能。

TreeSet则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行
排序。

HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素
都是无序的。

当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法
来计算对象的哈希值,从而确定元素的存储位置,如果此时哈希值相同,再调
用对象的equals()方法来确保该位置没有重复元素。

HashSet集合之所以能确保不出现重复的元素,是因为它在存入元素时做了很多工作。

当调用HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的哈希值,然后根据对象的哈希值计算出一个存储位置。

如果该位置上没有元素,则直接将元素存入,如果该位置上有元素存在,则会调用equals()方法让当前存入的元素依次和该位置上的元素进行比较,如果返回的结果为false就将该元素存入集合,返回的结果为true则说明有重复元素,就将该元素舍
弃。

package test;


public class test1 {

    private String name;
    private Integer age;

    public test1(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        System.out.println("equals");
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof test1)) {
            return false;
        }
        test1 ts = (test1) obj;
        if (this.age.equals(ts.age) && this.name.equals(ts.name)) {
            return true;
        }
        return false;
    }

    public int hashCode() {
        System.out.println("hashcode");
        return this.name.hashCode() | this.age.hashCode();
    }

}

package test;


import java.util.HashSet;

public class test2 {

    public static void main(String[] args) {
        HashSet set=new HashSet();
        set.add(new test1("Jack",20));
        set.add(new test1("Rose",30));
        set.add(new test1("Rose",30));
    }

}
package test;


import java.util.HashSet;
import java.util.Iterator;

public class test3 {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        set.add("aaa");
        set.add("bbb");
        set.add("ddd");
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

package test;


import java.util.Set;
import java.util.TreeSet;

public class test4 {
    public static void main(String[] args) {
        Set set = new TreeSet();
        set.add(9);
        set.add(6);
        set.add(1);
        set.add(4);
        set.add(3);
        for (Object object : set) {
            System.out.println(object);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号