java中的键值对实现?

时间:2013-05-24 10:42:12

标签: java

Java中是否有类似KeyValuePair的内容?

我有一个很长的以下类的元素列表:

public class Foo {
    int id;
    Set<String> items;
}

存储在这里:

LinkedList<Foo> myList;

每次搜索项目时,我都会遍历列表并搜索项目,但这需要花费很多时间。 我想做这样的事情:

myList.get(123) => items of the Foo with id = 123

5 个答案:

答案 0 :(得分:6)

您可以在Java中使用Map来实现此目的。它将允许键值对。

Map<Integer,Set<String>> map = new HashMap<Integer,Set<String>>();

将项目添加到地图

Set<String> set = new HashSet<String>();
      set.add("ABC");
      set.add("DEF");
      map.put(123,set);

从地图中获取项目

  map .get(123)  will give  Set<String>  associated  with id  123

答案 1 :(得分:4)

尝试java.util.Map

的一些实现

更多信息:here

答案 2 :(得分:1)

我认为MultiMap<Integer,String>适用于您的情况。

答案 3 :(得分:0)

你需要一个所谓的MultiMap,默认情况下java没有这个,但你总是可以使用Map来达到这个目的。

尝试使用HashMap<Integer, Set<String>>

答案 4 :(得分:-1)

导入java.util。*;

班级温度{

public static void main(String[] args){

    Map<Integer,String> map = new HashMap<Integer,String>();
    map.put(1,"anand");
    map.put(2,"bindu");
    map.put(3,"cirish");
    System.out.println(1+" = "+map.get(1));             
    System.out.println(2+" = "+map.get(2));
    System.out.println(3+" = "+map.get(3));

    Map<String,Integer> map1 = new HashMap<String,Integer>();
    map1.put("anand",1);
    map1.put("bindu",2);
    map1.put("cirish",3);
    System.out.println("anand = "+map1.get("anand"));               
    System.out.println("bindu = "+map1.get("bindu"));

    if(map1.get("cirish") != null){
        System.out.println("cirish = "+map1.get("cirish"));
    }

    if(map1.get("dinesh") != null){
        System.out.println("cirish = "+map1.get("dinesh"));
    }
}

}