列出包含多个“键”的对象

时间:2013-09-10 15:07:40

标签: java arrays list hashmap swt

海,

目前我在Java中有一个List,我通过list.add("Example");

添加了Entrys

但现在我想为每个条目添加ID。我可以通过

来做到这一点
list.put("Example XY");
list.setData("Example XY", 1);

但是在我的列表中有很多重复的“名字”。因此,它们的名称键被覆盖,因为它似乎无法在其中设置重复键。

有人有一个想法如何解决它?非常感谢!

4 个答案:

答案 0 :(得分:2)

您应该考虑使用ListViewer代替。 ListViewer可以包含您想要的任何bean对象,并将其中的任何字段显示为List中的文本。

HereListViewer的一个例子。


这绝对是更多的代码,但最终还是值得的。

答案 1 :(得分:2)

如果您想将密钥值对存储在集合

中,请使用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");
    } 
} 

注意:您不能拥有密钥

的重复值

答案 2 :(得分:1)

您应该查看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];

希望这有帮助。

答案 3 :(得分:0)

当对象具有相同的密钥时,您必须考虑它的含义。如果它与您使用的键不是同一个对象是错误的。您可以将数据添加到对象而不是使用字符串,然后使用包含每个“名称”的倍数的列表

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.