Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么必须将Hashmap保留在ArrayList中,以用作具有2行的ListView的数据源_Java_Android_Listview_Arraylist_Hashmap - Fatal编程技术网

Java 为什么必须将Hashmap保留在ArrayList中,以用作具有2行的ListView的数据源

Java 为什么必须将Hashmap保留在ArrayList中,以用作具有2行的ListView的数据源,java,android,listview,arraylist,hashmap,Java,Android,Listview,Arraylist,Hashmap,这是一个关于概念混淆的问题,我自己无法解决。一些当局的协助,以帮助我与这将是非常感谢的 ArrayList<Map<String, String>> 我的困惑是: “将使用一个映射列表,并且很可能只有第一个映射(索引为0的项)是将要使用的所有映射。或者将使用一个映射列表,其中每个映射只包含一个键/值对 为什么我们不能只用一张地图 或者是否有一种方法可以用于此?” 我是个新手,我的理解可能是错误的。希望考虑到我的水平,我能得到一个答案 提前感谢想想一个例子 在项目中需要

这是一个关于概念混淆的问题,我自己无法解决。一些当局的协助,以帮助我与这将是非常感谢的

ArrayList<Map<String, String>> 
我的困惑是:

“将使用一个映射列表,并且很可能只有第一个映射(索引为0的项)是将要使用的所有映射。或者将使用一个映射列表,其中每个映射只包含一个键/值对

为什么我们不能只用一张地图

或者是否有一种方法可以用于此?”

我是个新手,我的理解可能是错误的。希望考虑到我的水平,我能得到一个答案


提前感谢

想想一个例子


在项目中需要不同的hashmap,并且必须将它们存储在列表中。假设这些不同的hashmap可以有相同的键用于不同的目的。因此,您不能将它们存储在单个hashmap中。这些键将被替换。

HashMap只能包含唯一的键。不允许重复的键值。如果您事先确定条目总是唯一的,那么一个映射就足够了。使用ArrayList更多的是一种良好的编程实践,因为无法保证提供的数据,因此您可以确保没有数据丢失(如果某些集合的数据来自不同的提要,则可能会出现这种情况)。

ArrayList背后的思想是

  • ArrayList
    是要在
    列表视图中显示的项目列表

  • Map
    将布局中存在的键与您给定的值相匹配

如何得到这个

创建一个
映射
来保存键/值字符串:

Map<String, String> myDataMap = new HashMap<String, String>();
制作
阵列列表

    ArrayList<Map<String, String>> myData = new ArrayList<Map<String, String>>();
    myData.add(myDataMap);
它将键
“text1”
映射到
android.R.layout.simple\u list\u item\u 2
中的
android.R.id.text1
,对于
“text2”

然后通过
myListView.setAdapter(myData)

Map<String, String> myDataMap = new HashMap<String, String>();
myDataMap.add("text1", "value1"); //text1 maps to android.R.id.text1, so value1 will go there.
myDataMap.add("text2", "value2");
    ArrayList<Map<String, String>> myData = new ArrayList<Map<String, String>>();
    myData.add(myDataMap);
    SimpleAdapter adapter = new SimpleAdapter(this, myData,
                android.R.layout.simple_list_item_2, 
                new String[] {"text1", "text2" }, 
                new int[] {android.R.id.text1, android.R.id.text2 });