当前位置: 首页 > 知识库问答 >
问题:

java-哈希映射一个键和多个值,替代将值部分存储在列表中

谭桐
2023-03-14

通常,当哈希映射中的同一个键有多个值时,我找到的答案将使用列表或数组列表来存储值部分。例如:

Map<Object,ArrayList<Object>> multiMap = new HashMap<Object,ArrayList<Object>>();

我想知道是否可以保留hashmap的正常定义并将任何新值附加到旧值(逗号分隔)。类似于这样:

Map<String, String> memOf = new HashMap<String, String>();
    Map<String, String> subOrg = new HashMap<String, String>();
    Map<String, String> email = new HashMap<String, String>();

 String line="";
    String source="";
    String sub="";
    String obj="";
    String hashKey="";
    String hashVal="";


    for (Text value : values){ //start iterate over values 
        line=value.toString();
        String[] parts=line.trim().split(",");



    source=parts[0].trim();
    sub=parts[1].trim();
    obj=parts[2].trim();
    hashKey=sub;



    if (source.equals("memberOf")){
        hashVal=memOf.get(hashKey);
        if (hashVal!=null){
        hashVal=hashVal+","+obj;
        memOf.put(hashKey, hashVal);
        } 
    }

}

前面的代码是填充hashmaps,接下来读取单个值时,使用拆分(“,”)并将它们存储在字符串数组中。类似于:

for (String key1 : memOf.keySet()) {             
    x=key1;
    String[] y=memOf.get(x).toString().split(",");

    int numberOfItems = y.length;
        for (int i=0; i<numberOfItems; i++){  
    System.out.println(y[i]); 
    }
}

共有1个答案

卫沈义
2023-03-14

我想知道是否有可能保留hashmap的正常定义,并在旧值(逗号分隔)上附加任何新值。

你已经做到了。以一种低效的方式,但你做到了。

正如Andy Turner在评论中指出的,您可以寻找像Guava的MultiMap这样的实现,它允许将单个键映射到多个值。

除此之外,官方地图文档并没有报告这种将一种价值添加到另一种价值的能力,只是将其替换。对于整数,您可以很容易地对其进行递增,但对于其余的整数,您必须自己进行递增,或者找到一种更有效的方法(例如,一个数组列表)。

 类似资料:
  • 有人能帮我找到一份没有重复的正确清单吗。 我有一个哈希映射列表,比如“HashMap map”,它的大小是4。键值对类似于以下内容 我想创建另一个Hashmap列表,其中包含“uri\u path”的单个条目以及相应计算的平均值和计数。这就是我正在尝试的。理想情况下,新列表的大小应小于原始列表的大小。有人能帮我理解是不是出了问题

  • 我试图将一个键的值链接到另一个键的值,但似乎无法使其工作。 例如,如果我创建一个哈希映射,我希望能够创建一个键值对,比如(“x”,0)。然后,我希望能够将另一个键值对值添加到第一个键值对中,因此,如果我有(“x”,map.get(“y”))和(“y”,0),我希望能够以某种方式将其链接起来,这样,如果我现在更新y,使其(“y”,10),map。得到(“x”);也应该返回10。 我不知道如何让这个工

  • 我需要创建一个带有单键的哈希表,它应该包含多个字符串,数组列表,字符串,数组列表类型的值.. 爱尔兰共和国..,字符串类型的Msg,整数数组列表类型的groupdestId,字符串类型的Id,整数数组列表类型的userdestId..

  • 输入是一个哈希映射,比如 我想写一个方法,返回类型A的列表,其中有键,值属性与字符串类型,和键值从hashmap。 如何让它成为现实?

  • 问题内容: 我是Java编程的新手。我创建了一个包含我的键值对的哈希映射,可用于将用户输入替换为对应于各个键的值。 即 我在公式评估中使用它 注意 :为用户提供了特定公式的特定输入方式(值1 +值2 +值3) 我正在使用(value1 value2 value3)并将其转换为(value1key value2key value3key) 更新: 我现在更好地理解该问题旨在帮助更好地了解如何利用哈希

  • Java是将重复值保存为唯一值还是单独保存? 假设我有以下键值对值: 是否将其保存为3个键和3个值,或保存为3个键和2个值(A的值与C的值完全相同) 我担心的是大小,因为我要保存的值非常大,复制它们毫无意义。