java怎么修改Set里的值

一个题目叫我用Set接受10个字符串,实现查找和替换功能,这个替换怎么实现,麻烦的话就说说思路什么的。看帮助文档也没找到合适的方法

通过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的大小:重写该方法可以改变排序规则
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-11-28
在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() );
第2个回答  2013-07-18
Set本来就是无序的,所以替换直接删除要替换的元素,加入新元素就可以了,remove()和add()
第3个回答  推荐于2018-03-01
找出来,删除,添加要替换的字符串进去就可以了啊。。本回答被提问者和网友采纳

java中怎么往集合类set里添加数据??
java中往集合添加数据调用add();方法就行 \/\/第一步先创建一个set集合的子类 HashSet has=new HashSet<>();\/\/给set集合添加的方法是add();has.add(args);资料拓展:Collection接口可以存放重复元素,也可以存放不重复元素。List可以存放重复元素,Set就是不重复的元素。 通过元素的equals方法,来...

java中set集合怎样删除元素
set集合的可以直接使用set.remove("要删除的值");如下:Set<Object> set=new HashSet<Object>();set.add("a");set.remove("a");

java 怎么去掉set
set集合的可以直接使用set.remove("要删除的值");如下:Set<Object> set=new HashSet<Object>();set.add("a");set.remove("a");

java 怎么给set赋值
HashSet按Hash算法来存储集合中的元素 HashSet特点:1.不能保证元素的排列顺序,顺序可能变化 2.HashSet不是同步的,多个线程同时访问一个Set集合,必须用代码 保证同步 3.集合元素值可以是null 当向HashSet集合中存入一个元素,HashSet会调用该对象的HashCode()得到对象的hashCode,根据HashCode来决定对...

java中 set接口如何用removeALL()删除所有元素?
移除 set 中那些包含在指定 collection 中的元素(可选操作)。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个不对称差集。指定者:接口 Collection<E> 中的 removeAll参数:c - 包含要从此 set 中移除的元素的 collection 返回:如果此 set 由于调用而...

怎样从java集合类set中取出数据?
1. 创建Set实例:首先,需要创建一个Set实例,例如使用HashSet。```java Set set = new HashSet();```2. 获取迭代器:通过调用Set的`iterator()`方法来获取迭代器。```java Iterator it = set.iterator();```3. 遍历集合:使用迭代器的`hasNext()`方法来判断是否还有下一个元素,如果有,...

java中怎么往集合类set里添加数据??
两种向Set中添加元素的方法,第一种是使用add()方法,每次添加一个元素到set中,当集合中不存在相同元素时将添加到集合中,并返回true,当集合中存在元素时,返回false。代码如下:Set<String> sets = new HashSet<>();sets.add("String");System.out.println(sets.add("Tree"));System.out....

java中如何清空set里的值?
set.clear()移除此 set 中的所有元素(可选操作)。此调用返回后该 set 将是空的。指定者:接口 Collection<E> 中的 clear 抛出:UnsupportedOperationException - 如果此 set 不支持 clear 方法

java里面,如果不用迭代,怎么把一个set的全部元素一次全部加到另外一个s...
调用Set的方法addAll 看API boolean addAll(Collection<? extends E> c)如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。如果指定的 collection 也是一个 set,则 addAll 操作会实际修改此 set,这样其值是两个 set 的一个并集。如果操作正在进行的同时修改了...

怎样从java集合类set中取出数据?
创建set的iterator方法:Set<Object> set = new HashSet<Object>();Iterator<Object> it = set.iterator();while(it.hasNext())\/\/判断是否有下一个 it.next()取出元素。以上方法便是从Set集合中取出数据。

相似回答