阿海,目前,我在Java中有一个List,通过list.add("Example");添加条目但现在我想为每个条目添加ID。我可以通过
list.add("Example");
list.put("Example XY"); list.setData("Example XY", 1);
但是在我的列表中有很多重复的“名称”。所以它们的名称键被覆盖了,因为似乎我不能在其中设置重复的键。有人知道怎么解决吗?非常感谢!
f0brbegy1#
你真的应该考虑使用ListViewer来代替,ListViewer可以包含你想要的任何bean对象,并且在List中将它的任何字段显示为文本。Here是ListViewer的一个示例。这肯定是一个很多更多的代码,但它将是值得的。
ListViewer
List
d5vmydt92#
如果要将键值对存储在集合中,请使用HashMap。
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"); } }
注意:关键字不能有重复的值
zdwk9cvp3#
您应该查看MultiMap使用MultiMap<String, String>
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];
希望这对你有帮助。
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。
4条答案
按热度按时间f0brbegy1#
你真的应该考虑使用
ListViewer
来代替,ListViewer
可以包含你想要的任何bean对象,并且在List
中将它的任何字段显示为文本。Here是
ListViewer
的一个示例。这肯定是一个很多更多的代码,但它将是值得的。
d5vmydt92#
如果要将键值对存储在集合中,请使用
HashMap
。注意:关键字不能有重复的值
zdwk9cvp3#
您应该查看MultiMap
使用
MultiMap<String, String>
希望这对你有帮助。
z9ju0rcb4#
你必须考虑当一个对象有相同的键时意味着什么。如果它不是同一个对象,那么你使用的键是错误的。你可以把数据添加到对象中,而不是使用字符串,然后得到一个包含每个“名称”的倍数的列表。
或创建值列表的Map
我个人更喜欢解决方案1。