通过调用元素的equals方法实现判断两个元素是不是同一个元素public

通过调用元素的equals方法实现判断两个元素是不是同一个元素public

浏览次数: 次
信息来源: 用户投稿
更新日期: 2026-09-17
文章简介

集合对象是内存中的一个容器对象,用来方便的存贮批量的数据,集合中的数据在没有持久化,程序运行结束后,数据将消失。在java语言中,设计的集合主要为3大类 Set集合:实现Set接口的集合类称为Set

2025阿里云双十一服务器活动

集合对象是内存中的一个容器对象,用来方便的存贮批量的数据,集合中的数据在没有持久化,程序运行结束后,数据将消失。在java语言中,设计的集合主要为3大类

Set集合:实现Set接口的集合类称为Set集合;

List集合:实现List接口的集合类称为List集合;

Map集合:实现Map接口的集合类称为Map集合

java对集合设计的相关接口与类放在:java.util包中,在我们使用集合时,需要导入对应的集合类或者接口

集合中只能放引用类型数据,不能放基本数据类型,如果要放,请使用基本数据类型的包装类型

Collection是Set、List、Queue三个集合共同的接口2、Set集合

Set集合特性:不包含重复元素,通过调用元素的equals方法实现判断两个元素是不是同一个元素publicinterfaceSet<E>extendsCollection<E>

Set接口的实现类:HashSet、TreeSet

基于hash算法决定元素在集合中的存放位置,HashSet存取效率非常高

熟练Set集合的基本操作API:添加、删除、获取元素、集合大小,清空集合等获取集合元素:

Set接口的实现类:HashSet、TreeSet

基于hash算法决定元素在集合中的存放位置,HashSet存取效率非常高

熟练Set集合的基本操作API:添加、删除、获取元素、集合大小,清空集合等

Setset=newHashSet();set.add(1);set.add(2);set.add(3);Object[]arr=set.toArray();for(inti=0;i<arr.length;i++){??System.out.println(arr[i]);}

  • 一个递归获取集合元素的方式,需要集合实现Iterable接口,此接口定义了迭代访问集合元素的方法
  • 迭代器是一个指针对象,默认指向集合第一个元素前,通过调用方法可以移动迭代器
  • //迭代器:IterableIterator<T>iterator();//实现Iterable接口的方法,就能得到的一个迭代器对象

    通过调用元素的equals方法实现判断两个元素是不是同一个元素public

    //通过迭代器获取Set集合元素Setset=newHashSet();set.add(1);//....Iteratorit=set.iterator();while(it.hasNext()){??System.out.println(it.next());}

    对Set集合,如果放到集合里的是一个对象,且当对象的某个属性一致时,判断为同一个属性,如何操作?

    Set集合默认是调用对象的equals方法比较,此时,已不能满足我们的业务需要

    解决方法:根据新的业务重写equals方法,此时还要重写hashcode方法

    下面的例子是当tel相同时视为同一个对象:

    @Override??publicinthashCode(){//这里重写了hashCode方法,将tel作为hashCode的值returnInteger.parseInt(tel);??}

    @Override??publicbooleanequals(Objecto){if(this==o){??returntrue;}if(o==null||getClass()!=o.getClass()){??returnfalse;}Useruser=(User)o;//根据Tel是否相同判断是否为同一个人if(tel.equals(user.getTel())){??returntrue;}returnObjects.equals(id,user.id);??}}

    publicstaticvoidmain(String[]args){??Setset=newHashSet();

    Useru1=newUser();??u1.setId(1);??u1.setName("张三");??u1.setTel("183");

    Useru2=newUser();??u2.setId(2);??u2.setName("李四");??u2.setTel("183");

    set.add(u1);??set.add(u2);

    //可以看到,只输出了1,证明只有1个对象存进去了??System.out.println(set.size());

    Iteratorit=set.iterator();??while(it.hasNext()){System.out.println(it.next());??}

    Set接口的第2个实现类,TreeSet相对于HashSet,多了一个排序的功能

    排序方法:使用元素的自然顺序对元素进行排序

    元素的自然顺序:此元素实现Comparable接口,当将元素放到TreeSet集合中,TreeSet集合就根据Comparable接口定义的比较规则来比较元素//返回值为整型:为0表示两个元素相等,大于0表示大于,小于0表示小于publicinterfaceComparable{?intcompareTo(To)?}

    如果放到TreeSet集合中的元素没有实现自然排序,则意味会出异常。在JDK中,8种基本数据类型的包装类型和字符串都实现了此接口

    如果在集合中放其它类型的元素,必须手动实现Comparable接口,并实现接口中定义的compareTo方法

    @DatapublicclassUserimplementsComparable<User>{

    @Override??publicintcompareTo(Usero){//根据id排序intcompare=Integer.compare(this.id,o.getId());if(compare==0){??//若id相同,则根据名字排序??returnthis.name.compareTo(o.getName());}returncompare;??}}

    标签:
    什么是TFP照片拍摄(摄影中fp什么意思)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!