首页

文章

java中的set集合,有直接修改其中的数据的方法吗?

发布网友 发布时间:2022-04-20 03:27

我来回答

4个回答

热心网友 时间:2023-06-25 18:25

通过remove和add方法,set集合中的对象属性为private final
Set接口

集合里的多个对象没有明显顺序。Set集合和Collection基本一样,没有

提供额外方法,只是和Collection行为不同

Set集合不允许包含相同的元素,如果add的是两个相同元素会返回false

Set不实用==运算符,根据equals方法

HashSet类

HashSet类是Set接口的典型实现,大多数时候使用Set集合都是用这个类实现

HashSet按Hash算法来存储集合中的元素

HashSet特点:

1.不能保证元素的排列顺序,顺序可能变化

2.HashSet不是同步的,多个线程同时访问一个Set集合,必须用代码

保证同步

3.集合元素值可以是null

当向HashSet集合中存入一个元素,HashSet会调用该对象的HashCode()

得到对象的hashCode,根据HashCode来决定对象在HashSet中的位置

如果两个元素equal方法比较返回true但是hashCode()方法返回值不同,

HashSet会把两个元素存储在不同位置

HashSet判断两个元素相同需要equal和hashCode都相同

因此重写类的equals方法和hashCode()方法要保证两个对象通过equals

返回true时hashCode也相等

Hash算法保证通过一个对象快速找到另一个对象。可以很快的执行,当需要

查找集合中的某个元素时,hash算法可以直接根据该元素的值找到该元素

从而让程序快速找到元素。

在数组中通过数组元素索引寻找元素,HashSet通过hashcode索引

重写hashCode()方法的基本步骤

当两个对象通过equals方法返回true时,两个对象的hashCode相等

对象中用作equals比较标准的属性,应该用来计算hashCode

向HashSet中添加可变对象时,如果修改HashSet集合中对象,有可能导致

该对象与集合中其他对象相等,从而导致HashSet无法正确访问对象

HashSet有一个子类 LinkedHashSet,LinkedHashSet集合也是根据HashCode来决定

元素的存储位置,同时使用链表维护元素次序,这样是的元素看起来是以

插入顺序保存,便利集合时会按插入顺序来访问。

Linked需要维护元素的插入顺序,性能略低于HashSet,但在迭代时性能更好

TreeSet是SortedSet接口的唯一实现

TreeSet可以确保元素处于排序状态。提供了几个额外方法:

1.Comparator
comparator():返回当前Set使用的Comparator,或者null,表示

自然的方式排序

2.Object first():返回集合中的第一个元素

3.Object last():返回集合中最后一个元素

4.Object lower(Object
e):返回集合中位于指定元素之前的元素

5.Object higher(Object
e):返回集合中位于制定元素之后的元素

6.SortedSet
subSet(fromElement,toElement):返回set的子集,范围从from到to

7.SortedSet headSet(toElement)返回set子集,小于toElement

8.SortedSet
tailSet(fromElement)返回set子集,由大于等于fromElement元素组成

TreeSet是根据元素值来进行排序而不是根据插入顺序

TreeSet采用红黑树的数据结构对元素排序 :支持自然排序(默认)和定制排序

自然排序:

TreeSet会调用集合元素的compareTo方法来比较元素之间的大小关系,

然后将集合元素按升序排列。

Java提供了一个Comparable接口,该接口定义了一个compareTo(Object obj)方法

该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象

可以比较大小。obj1.compareTo(obj2),如果方法返回0,表明两个对象相等。如果

返回正整数,表明obj1大于obj2;如果返回负整数,表明obj1小于obj2

如果要将对象添加如TreeSet该对象必须实现Comparable接口

当想TreeSet中添加对象时,会先将要添加的对象与TreeSet中的对象用compareTo比较

如果找不到compareTo则引发ClassCastException异常

因为只有同一个类型才能比较大小 所以TreeSet中添加的应该是同一个类型的对象

TreeSet和HashSet集合中的对象如果是可变对象,对象属性改变时,会导致集合处理

对象复杂化,易出错。所以应该尽量在集合中添加不可变对象

不可变对象是

1.属性为private final

2.含有带参数构造器,为对象初始化

3.属性有get方法没有set方法

定制排序:

TreeSet的自然排序是根据集合元素大小,TreeSet将它们以升序排列。使用定制

排序,如降序,使用Comparator接口的帮助。接口中包含一个int compare(T o1,T o2)

用于比较o1和o2的大小:重写该方法可以改变排序规则

热心网友 时间:2023-06-25 18:26

在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

Set set=new HashSet();
set.add("abc");
set.add("cde");
set.add("efg");
set.add("fgh");
set.add("abc"); //重复的abc,set会自动将其去掉
System.out.println("size="+ set.size() );

热心网友 时间:2023-06-25 18:26

Set本来就是无序的,所以替换直接删除要替换的元素,加入新元素就可以了,remove()和add()

热心网友 时间:2023-06-25 18:27

找出来,删除,添加要替换的字符串进去就可以了啊。。
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 急求 set集合进行强行逆转顺序 java集合类的Set总结: 我向set集合存放了10个随机数,可是放完后在用set.... 关于java中set集合的问题 怎样从java集合类set中取出数据? map,set,list和数组之间的转换怎么转换?求高手... 如何将set集合转化为json数据 怎样从java集合类set中取出数据 hashmap中对象作为键,然后把取出键的set集合,并转... 怎么把set集合里的值放到数组里 请问缩写的SET是什么意思(关于数量的) Java中Set 和List两个集合怎样互相转化 java 多个set写出数组形式 如何实现List,Set,数组间的相互转化 Set集合转化List集合 按网络规模分类,校园网属于 中国精神颂 作文 你有吗? 微信小程序考试酷可以切屏吗 中国精神颂作文,原创,急 微信切屏后怎么没有色笔可以用 java集合set有哪些方法 java中set集合与list集合分别是怎样存放数据的 1.校园网属于什么样的网络?2.如果是局域网为什么不能共享文件? 宽容是一种美德的例子 宽容是一种美德 宽容是一种美德,宽容也是有原则的。为什么说宽容是... 宽容是一种美德一种气度一种修养穿梭于茫茫人海生... 宽容是一种美德作文 关于宽容是一种美德的作文 宽容是美德 议论文 为什么说宽容是一种美德 议论文宽容是一种美德我们要懂得宽容开头怎么写? 急需一篇《宽容是一种美德》的作文!!!!…急呀…… 宽容是美德的作文 宽容真的是一种美德吗? 宽容是一种美德,怎样把握宽容的尺度答案 宽容是一种什么? 宽容别人是一种美德? 关于宽容是一种美德的名言名句 高分作文范文-宽容是一种美德-800字
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com