【问题标题】:Adding an array into HashMap将数组添加到 HashMap
【发布时间】:2016-06-01 09:17:20
【问题描述】:

我正在尝试向 HashMap 添加一个数组,但是我找不到一个好的解决方案。 现在我有:

Person[] array;

public void add(Person p){

    HashMap<String, ArrayList<String>> people = 
    new HashMap <String, ArrayList<String>>();

    people.put("key", p);

但是,put 方法不接受“p”。 我知道我也可以使用循环来做到这一点,但我不确定如何。我在想这样的事情:

HashMap<String, ArrayList<String>> people = 
new HashMap <String, ArrayList<String>>();

map.put("key", new ArrayList<String>>());

for (int i=0;i<Person.size(); i++) {
    map.get("sth").add(Person[i]); 
}

将数组元素添加到哈希映射中的另一种方法是什么?或者我应该改变什么才能使两者中的任何一个起作用?在此先感谢,我刚开始使用 Java,因此非常感谢任何帮助!

【问题讨论】:

  • 你如何期望 ArrayList 类型的东西接受 Person?
  • 可以改成HashMap&lt;String, Person&gt; people = new HashMap &lt;String, Person&gt;();吗?

标签: java arrays hashmap


【解决方案1】:
HashMap<String, ArrayList<String>>  

查看它要求 list of strings 的泛型类型,而您正在尝试添加 person ,这当然会出错。

你可以把hashmap上的generic改成这个

HashMap<String,Person> persons = new  HashMap<String,Person>();

然后您可以使用put 方法将一个人添加到map

persons.put("key",person);

如果您需要在map 中添加array of persons,您可以使用以下方法。

public void foo(Person[] array){
        HashMap<String , Person[]> persons = new HashMap<String , Person[]>();
        persons.put("key", array);
    }

【讨论】:

    【解决方案2】:

    数组与ArrayList 是不同的对象。我建议你一直使用ListArrayList。在大多数情况下,您不需要普通数组。

    【讨论】:

      【解决方案3】:

      您需要先创建您的 Person 的 List 或 ArrayList,然后才能添加它。

      public void add(Person p){
      ArrayList<Person> p1 = new ArrayList<>();
      
          HashMap<String, ArrayList<String>> people = new HashMap <>();
      
          people.put("key", p1.add(p));
      

      【讨论】:

      • 应用你的答案我收到错误“HashMap> 类型中的方法 put(Integer, ArrayList) 不适用于参数 (int, boolean) "
      • 我把它做成了 HashMap> 所以我认为你应该检查你输入的数据类型,如果是字符串或整数然后改变它。
      • 是的,我现在有整数(并且我相应地更改了所有内容),但我认为这是造成问题的布尔值。为什么 p1.add(p) 被读取为布尔值?
      • 你可以在外面做 p1.add(p) ,然后 di people.put("key",p1);这个应该是一样的。
      • 仍然没有,但我找到了另一种解决方案。无论如何,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多