在java中维护项目的顺序
执行以下操作的最佳方法是什么(确保列表中的项目与列表2中的项目顺序相同): 现在结果应该是这样的 清单三在java中维护项目的顺序,java,Java,执行以下操作的最佳方法是什么(确保列表中的项目与列表2中的项目顺序相同): 现在结果应该是这样的 清单三 harry marry peter janice jerry 逐步: 对于列表中的每个项目: 将项目的第一部分与列表2中的项目进行比较 如果它们相等,则将其添加到列表三 如果项目存在于列表中,但不在列表2中,请不要执行任何操作并保存它 某处 从步骤1继续 您位于列表的末尾,添加在步骤中跳过的项目 三, 我知道这么多(实际上我不知道,我想我知道),我相信有更好的方法来做到这一点 为什么我得到
harry
marry
peter
janice
jerry
逐步:
对于列表中的每个项目:
为什么我得到了否决票,我错过了什么吗?如果您将角色(按顺序将键存储在
ArrayList
中)和键值映射反转到SortedMap
,例如TreeMap或ConcurrentSkipListMap
,可能会更容易些。排序映射的比较器可以使用List.indexOf
作为元素比较的基础
通过这种安排,映射定义了键/值映射,这对于映射来说是很自然的,而列表保持了所需的顺序,这对于列表来说是很自然的
或者,使用常规映射,而不是排序映射,在列表上使用迭代,并从映射中获取值。例如
ArrayList keysList;
Map keyValues;
for(String key: keysList) {
String value = keyValues.get(key);
}
编辑:Commons collections有一个列表,可以像集合一样确保唯一性。它还具有各种类型的OrderedMap,特别是按列表顺序维护键/值映射的OrderedMap。有关泛型支持,请参阅。如果您将角色(按顺序将键存储在
数组列表中)和SortedMap
中的键值映射(如TreeMap或ConcurrentSkipListMap
中)颠倒,可能会更容易。排序映射的比较器可以使用List.indexOf
作为元素比较的基础
通过这种安排,映射定义了键/值映射,这对于映射来说是很自然的,而列表保持了所需的顺序,这对于列表来说是很自然的
或者,使用常规映射,而不是排序映射,在列表上使用迭代,并从映射中获取值。例如
ArrayList keysList;
Map keyValues;
for(String key: keysList) {
String value = keyValues.get(key);
}
编辑:Commons collections有一个列表,可以像集合一样确保唯一性。它还具有各种类型的OrderedMap,特别是按列表顺序维护键/值映射的OrderedMap。有关泛型支持,请参阅。使用
你可以称之为
map.put(one,value1);
稍后再打电话
map.get(one);
将返回值1
此外,哈希映射不接受重复的密钥,因此如果调用
map.put(one,value2);
在此之后,将替换原始值
你可以用
map.containsKey(one)
要检查一个密钥是否已经存在,请使用
你可以称之为
map.put(one,value1);
稍后再打电话
map.get(one);
将返回值1
此外,哈希映射不接受重复的密钥,因此如果调用
map.put(one,value2);
在此之后,将替换原始值
你可以用
map.containsKey(one)
要检查一个元素是否已作为键存在如果仅比较元素的键,则可以将它们存储在LinkedHashSet中,并使用LinkedHashSet的contains方法检查元素是否以恒定时间O(1)存在
LinkedHashMap也可以用于此目的,但是它需要额外的空间来存储值,这不是必需的,我们只对键感兴趣
请参阅:如果只比较元素的键,则可以将它们存储在LinkedHashSet中,并使用LinkedHashSet的contains方法检查元素是否存在于常量时间O(1)中
LinkedHashMap也可以用于此目的,但是它需要额外的空间来存储值,这不是必需的,我们只对键感兴趣
参考:谢谢您的快速回复,我忘了提到我不能有重复的条目,这就是我使用LinkedHashSet的原因,顺序也很重要。您能否详细说明一下“排序映射的比较器可以使用List.indexOf作为元素比较的基础”。@c0mrade-请参阅我的编辑。Commons collections为您提供了所有功能,无需编写任何自定义比较器等。感谢您的快速响应,我忘了提到我不能有重复的条目,这就是我使用LinkedHashSet的原因,顺序也很重要。请详细说明“排序映射的比较器可以使用List.indexOf作为元素比较的基础”。@c0mrade-请参阅我的编辑。Commons collections为您提供了所有功能,无需编写任何自定义比较器等。three~value3
的意思是什么?@Gunslinger47 itemName~item value、模拟名称/值raylists没有项目名称,这就是我问的原因。这些值由索引引用。@Gunslinger47 my bad three~value3是一个arraylist项,我打算将其拆分为name value,以便更好地使用hashmap,正如mdma所建议的“为什么我得到了否决票,我错过了什么?”可能是因为您的问题很难理解。three~value3
是什么意思?@Gunslinger47 itemName~item value,模拟名称/值raylists没有项目名称,这就是我问的原因。这些值由索引引用。@Gunslinger47 my bad three~value3是一个arraylist项,我打算将其拆分为name value,以便更好地使用hashmap,正如mdma所建议的“为什么我得到了向下投票,我错过了什么?”可能是因为您的问题很难理解。