海,
目前我有一个 Java 列表,我通过其中添加条目list.add("Example");
但现在我想为每个条目添加 ID。我可以通过
list.put("Example XY");
list.setData("Example XY", 1);
但是在我的列表中有很多重复的“名称”。因此,它们的名称键被覆盖,因为我似乎无法在其中设置重复键。
有人有一个想法如何解决它?非常感谢!
你真的应该考虑使用 aListViewer
代替。AListViewer
可以包含您想要的任何 bean 对象,并将其任何字段显示为List
.
这是一个示例ListViewer
。
这肯定是更多的代码,但最终还是值得的。
如果HashMap
您想将键值对存储在集合中,请使用
import java.util.HashMap;
public class Test1 {
public static void main( String [] args)
{
HashMap<String, String> map = new HashMap<String,String>();
map.put("1", "Example XY");
map.put("2", "Example XZ");
}
}
注意:您不能有重复的键值
你应该看看MultiMap
利用MultiMap<String, String>
Multimap<String, String> myMultimap = ArrayListMultimap.create();
// Adding some key/value
myMultimap.put("E1", "One");
myMultimap.put("E1", "Two");
myMultimap.put("E1", "Three");
myMultimap.put("E2", "AnotherOne");
// Getting the size
int size = myMultimap.size();
System.out.println(size); // 4
// Getting values
Collection<string> sample = myMultimap.get("E1");
System.out.println(E1); // [One, Two, Three];
希望这可以帮助。
您必须考虑对象具有相同键时的含义。如果它不是同一个对象,那么您使用的密钥就是错误的。您可以将数据添加到对象而不是使用字符串,然后有一个列表,其中包含每个“名称”的倍数
List l = new ArrayList<SomeObject>;
list.put(new SomeObject("red ball", 1))
list.put(new SomeObject("red ball", 2))
或制作值列表的映射
Map<String,List<SomeObject>> = new HashMap<String,List<SomeObject>>;
map.get("Red Ball")==null ? map.put(new ArrayList<SomeObject>(){{ add(x) }})
: map.get("Red Ball").add(x);
我个人更喜欢解决方案1。