在HashMap中,ArrayList为Empty

时间:2018-01-10 18:26:51

标签: java android arraylist

我有以下代码。 执行items.clear后,为什么hashMap中的项是空的? 如何在HashMap中的项目中保存数据?

Class itemCategory{
   String name;
   List<itemCategory> items= new ArrayList<itemCategory>();
}

Map<String, Object> CategoryItems= new HashMap<>();
List<itemCategory> items= new ArrayList<itemCategory>();
List<String> names= new ArrayList<String>();
for ( String name: names) {
   items.getAllitems(name); 
   CategoryItems.put(name,items)
   items.clear
}

2 个答案:

答案 0 :(得分:1)

  • 当您正在使用数组List<itemCategory> items= new ArrayList<itemCategory>();时,它是一个空数组

  • 您需要将项目添加到列表

  • 您只能添加itemCategory
  • 的实例
  • 您可以添加到列表 items.add(new itemCategory())
  • 您还可以按如下方式初始化List

    ArrayList<String> list = new ArrayList<String>() {{
    add(new itemCategory());
    add(new itemCategory());
    add(new itemCategory());
    }};
    
  • 现在您可以在 HashMap

  • 中添加项目
  • 但是如果你在for循环中使用items.clear()而不是列表内容将清除,你将只在hashmap中存储一个项目
  • 如果您不想要items的内容,请在for循环之外设置items.clear()

答案 1 :(得分:0)

问题已解决:

我在HashMap中更改了ArrayList,将name + id作为键,将itemCategory更改为data

我发现ArrayList链接到HashMap中的ArrayList,所以如果对它进行任何操作,都会反映到HashMap中的ArrayList。