Java 列出具有多个“标记”的对象;“钥匙”;在里面

Java 列出具有多个“标记”的对象;“钥匙”;在里面,java,arrays,list,hashmap,swt,Java,Arrays,List,Hashmap,Swt,海 目前我在Java中有一个列表,我通过List.add(“示例”) 但是现在我想给每个条目添加ID。我可以通过 list.put("Example XY"); list.setData("Example XY", 1); 但在我的名单上有很多重复的“名字”。因此,名称的键被覆盖,因为我似乎无法在其中设置重复的键 有人知道怎么解决吗?非常感谢 你真的应该考虑改用a。ListViewer可以包含您想要的任何bean对象,并将其任何字段显示为列表中的文本 是列表查看器的一个示例 当然,代码要多得

目前我在Java中有一个列表,我通过
List.add(“示例”)

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

list.put("Example XY");
list.setData("Example XY", 1);
但在我的名单上有很多重复的“名字”。因此,名称的键被覆盖,因为我似乎无法在其中设置重复的键


有人知道怎么解决吗?非常感谢

你真的应该考虑改用a。
ListViewer
可以包含您想要的任何bean对象,并将其任何字段显示为
列表中的文本

列表查看器的一个示例



当然,代码要多得多,但最终还是值得的。

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

列表查看器的一个示例



当然,代码要多得多,但最终还是值得的。

如果您想在集合中存储键值对,请使用
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");
    } 
} 
import java.util.HashMap;
公共类Test1{
公共静态void main(字符串[]args)
{     
HashMap=newHashMap();
地图放置(“1”,“示例XY”);
地图放置(“2”,“示例XZ”);
} 
} 

注意:如果要将键值对存储在集合中,则不能有重复的键值

使用
哈希映射

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");
    } 
} 
import java.util.HashMap;
公共类Test1{
公共静态void main(字符串[]args)
{     
HashMap=newHashMap();
地图放置(“1”,“示例XY”);
地图放置(“2”,“示例XZ”);
} 
} 
注意:键不能有重复值

您应该查看

使用
MultiMap

Multimap myMultimap=ArrayListMultimap.create();
//添加一些键/值
myMultimap.put(“E1”,“One”);
myMultimap.put(“E1”,“Two”);
myMultimap.put(“E1”,“三”);
myMultimap.put(“E2”、“AnotherOne”);
//得到尺寸
int size=myMultimap.size();
系统输出打印项次(大小);//4.
//获取价值
采集样本=myMultimap.get(“E1”);
系统输出打印Ln(E1);//[一,二,三];
希望这能有所帮助。

你应该调查一下

使用
MultiMap

Multimap myMultimap=ArrayListMultimap.create();
//添加一些键/值
myMultimap.put(“E1”,“One”);
myMultimap.put(“E1”,“Two”);
myMultimap.put(“E1”,“三”);
myMultimap.put(“E2”、“AnotherOne”);
//得到尺寸
int size=myMultimap.size();
系统输出打印项次(大小);//4.
//获取价值
采集样本=myMultimap.get(“E1”);
系统输出打印Ln(E1);//[一,二,三];

希望这有帮助。

你必须考虑当一个对象有相同的密钥时意味着什么。如果不是同一个对象,则使用的键是错误的。您可以将数据添加到对象中,而不是使用字符串,然后创建一个包含多个“名称”的列表

List l=新的数组列表;
列表。放置(新对象(“红色球”,1))
列表。放置(新对象(“红色球”,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);
Map=newhashmap;
map.get(“红色球”)==null?put(新的ArrayList(){{add(x)}})
:map.get(“红色球”).add(x);

我个人更喜欢解决方案1。

你必须考虑当一个对象有相同的密钥时意味着什么。如果不是同一个对象,则使用的键是错误的。您可以将数据添加到对象中,而不是使用字符串,然后创建一个包含多个“名称”的列表

List l=新的数组列表;
列表。放置(新对象(“红色球”,1))
列表。放置(新对象(“红色球”,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);
Map=newhashmap;
map.get(“红色球”)==null?put(新的ArrayList(){{add(x)}})
:map.get(“红色球”).add(x);

就个人而言,我更喜欢解决方案1。

那么他如何获得“示例XY”的id?迭代所有键不是一个好的解决方案…OP可以使用MultiMap,它将解决这个问题。检查我的答案。那么他如何获得“示例XY”的id?迭代所有键不是一个好的解决方案…OP可以使用MultiMap,它将解决这个问题。检查我的答案。