java - 将 HashMap 的特定键值集复制到另一个 HashMap 中

标签 java hashmap

我正在尝试获取 HashMap 的特定键的值,然后将其复制到新的值中。有没有比我尝试的方法更能实现这一目标的方法?提前致谢!

LinkedHashMap<String, List<String>> TradeDetailsNewOrPrevious = new LinkedHashMap<String, List<String>>();

LinkedHashMap<String, List<String>> temp = new LinkedHashMap<String, List<String>>();

temp = (LinkedHashMap<String, java.util.List<String>>) TradeDetailsModified.get(tradeID);

TradeDetailsNewOrPrevious = (LinkedHashMap<String, java.util.List<String>>) temp.clone();

我得到“ClassCastException:

java.util.ArrayList cannot be cast to java.util.LinkedHashMap"

在行 "temp = (LinkedHashMap<String, java.util.List<String>>) TradeDetailsModified.get(tradeID);

最佳答案

您的代码没有反射(reflect)您的问题,我的理解是 - 您需要特定键或一组键的值,然后您想要将这些值复制到新的值中,这是我尝试过的,您可以用循环更新这个:

      LinkedHashMap<String, List<String>> tradeDetailsNewOrPrevious = new LinkedHashMap<>();

  //    taking some values for a clear understanding
  tradeDetailsNewOrPrevious.put("AA", Arrays.asList("a", "aa", "aaa"));
  tradeDetailsNewOrPrevious.put("BB", Arrays.asList("b", "bb", "bbb"));
  tradeDetailsNewOrPrevious.put("CC", Arrays.asList("c", "cc", "ccc"));

  LinkedHashMap<String, List<String>> temp = new LinkedHashMap<String, List<String>>();

  List<String> tradeIDs = Arrays.asList("AA", "CC", "DD");

  for (String tradeID : tradeIDs)
  {
     if (tradeDetailsNewOrPrevious.keySet().contains(tradeID))
     {
        temp.put(tradeID, tradeDetailsNewOrPrevious.get(tradeID));
     }
  }

它将复制键与 tradeID 匹配的所有值。

如果这不是您想要的内容,请在评论中明确说明问题。

关于java - 将 HashMap 的特定键值集复制到另一个 HashMap 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58400177/

相关文章:

java - 添加到 arraylist 后不允许更改 hashmap 值

java - 如何与mysql中其他行插入的数据形成代码字符串

java - Tomcat 7 + JNDI 资源 + IBM WebSphere MQ

java - 从 HashMap<String, HashSet<Integer>> 获取随机值

java - java中的Hash Map与LinkedList

java - 在 Java 中创建一个 HashMap 副本——什么是最有效的方法?

java - 外部化 namespace JAXB 生成的 package-info.java

Java如何获取.jar上图片的路径

java - 系统退出而不是JFrame关闭

java - 如何在 Java 中存储一对一关系