java 其中包含多个“键”的列表对象

ep6jt1vc  于 2022-12-10  发布在  Java
关注(0)|答案(4)|浏览(143)

阿海,
目前,我在Java中有一个List,通过list.add("Example");添加条目
但现在我想为每个条目添加ID。我可以通过

list.put("Example XY");
list.setData("Example XY", 1);

但是在我的列表中有很多重复的“名称”。所以它们的名称键被覆盖了,因为似乎我不能在其中设置重复的键。
有人知道怎么解决吗?非常感谢!

f0brbegy

f0brbegy1#

你真的应该考虑使用ListViewer来代替,ListViewer可以包含你想要的任何bean对象,并且在List中将它的任何字段显示为文本。
HereListViewer的一个示例。
这肯定是一个很多更多的代码,但它将是值得的。

d5vmydt9

d5vmydt92#

如果要将键值对存储在集合中,请使用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");
    } 
}

注意:关键字不能有重复的值

zdwk9cvp

zdwk9cvp3#

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

希望这对你有帮助。

z9ju0rcb

z9ju0rcb4#

你必须考虑当一个对象有相同的键时意味着什么。如果它不是同一个对象,那么你使用的键是错误的。你可以把数据添加到对象中,而不是使用字符串,然后得到一个包含每个“名称”的倍数的列表。

List l = new ArrayList<SomeObject>;

list.put(new SomeObject("red ball", 1))
list.put(new SomeObject("red ball", 2))

或创建值列表的Map

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。

相关问题