Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何替换LinkedHashSet中的特定元素?_Java_Linkedhashset - Fatal编程技术网

Java 如何替换LinkedHashSet中的特定元素?

Java 如何替换LinkedHashSet中的特定元素?,java,linkedhashset,Java,Linkedhashset,有了ArrayList,我会做类似的事情 myList.set(myList.indexOf(oldItemNumber), newItemNumber); 对于LinkedHashSet,有没有一种简单的方法来实现这一点 只需使用put()方法即可。它将更新该特定条目。使用map.put(key,value)如果使用相同的键,它将替换LinkedHashMap文档中以前的值: 哈希表和链表映射接口的实现,带 可预测的迭代顺序。此实现不同于HashMap 因为它维护了一个贯穿其所有应用程序的双

有了ArrayList,我会做类似的事情

myList.set(myList.indexOf(oldItemNumber), newItemNumber);

对于LinkedHashSet,有没有一种简单的方法来实现这一点

只需使用
put()
方法即可。它将更新该特定条目。

使用
map.put(key,value)
如果使用相同的键,它将替换LinkedHashMap文档中以前的值:

哈希表和链表映射接口的实现,带 可预测的迭代顺序。此实现不同于HashMap 因为它维护了一个贯穿其所有应用程序的双链接列表 条目。此链表定义迭代顺序,即 通常是将关键点插入地图的顺序 (插入顺序)。请注意,如果使用键,则插入顺序不受影响 将重新插入到地图中。(如果出现以下情况,将钥匙k重新插入地图m中: m、 当m.containsKey(k)返回true时调用put(k,v) 在调用之前。)


因此,您可以简单地将新值放入()中,它将保持其在排序中的当前位置。如果要将其添加到末尾,请删除旧值,然后添加新值。

对于集合来说,这个问题没有意义。添加到集合中的新对象要么等于现有对象(在这种情况下不会发生任何事情),要么不等于现有对象(在这种情况下,将在末尾添加)

如果不删除并重新添加所有内容,就无法在特定位置插入对象


您可能需要查看
TreeSet
,它允许您在添加和删除对象时保留一个有序集,该有序集将由提供的比较器保持有序。

我解决了这个问题,其中LinkedHashSet成员对象具有一个哈希代码,该哈希代码只计算对象的一部分(例如其名称字段)上的值。是的,这是非常规的,但我还有一个匹配的equals()方法。两个不同的对象可以具有相同的哈希代码,并且看起来相等,但在内部它们具有一些不同的值

// Rebuild Linked Hash Set in original order with new element.
ArrayList<Item> newSet = new ArrayList<>(oldSet);
newSet.add(newSet.indexOf(oldItem), newItem);
oldSet.clear();
oldSet.addAll(newSet);
例如,数据库记录的密钥必须是唯一的。您需要用一组新的值替换该记录,这样您就可以用新值找到匹配的键并替换该记录

// Rebuild Linked Hash Set in original order with new element.
ArrayList<Item> newSet = new ArrayList<>(oldSet);
newSet.add(newSet.indexOf(oldItem), newItem);
oldSet.clear();
oldSet.addAll(newSet);
//使用新元素按原始顺序重新生成链接的哈希集。
ArrayList newSet=新ArrayList(旧集);
newSet.add(newSet.indexOf(oldItem)、newItem);
oldSet.clear();
oldSet.addAll(新闻集);

arrayList将以相同的顺序包含旧值,新项将添加到旧项之前。无需删除副本。当添加到旧哈希集(LinkedHashSet)时,它只保留第一次出现的任何重复哈希代码

对不起,我是指LinkedHashSet而不是LinkedHashMap=/对不起,我是指LinkedHashSet而不是LinkedHashMap=/@GedankenNebel,那么同样的逻辑也适用。使用add()方法。add()方法只是将一个元素添加到我的集合中。我想替换LinkedHashSet中的一个特定元素。对不起,我是说LinkedHashSet而不是LinkedHashMap=/@GedankenNebel该
不允许重复值,也不允许排序,也不允许索引,因此我们无法在索引上替换。我认为树集是比树集更好的选择。谢谢相关的: