2010-10-16 121 views
2
ArrayList<HashMap<String, String>> 
arrayListRowsFirst = new ArrayList<HashMap<String, String>>(); 

今天,当我正在浏览一段代码时,这段代码让我想起了一段时间。以下是我对这个声明的一些疑问。Arraylist中的HashMap

  1. 如果必须将一个HashMap追加到一个ArrayList中,可能会有什么要求。
  2. ArrayList排序过程中会发生什么,它将如何去,需要很长时间。

回答

5

首先,在我看来“通用链”是一个不好的做法。我鼓励将HashMap封装在封装数据的类中,允许将操作逻辑放在类中,而不是到处散布。

要回答#1,我可以考虑一些场景。例如,您可能有语言,将某些常量映射到其他翻译。事实上,它在标识符中表示第一行,这让我认为它可能是某种数据矩阵,而且第一个String参数将存在于列表中的所有条目中(实际上的确很糟糕) 编辑:我误解了你的意思问题出现了。您可以像其他任何条目一样添加它。查看示例代码的其他人的答案。 :-)

要回答#2,除非您能够提供一个比较器,否则您将无法对ArrayList排序,在这一点上它取决于您如何排序(可能是大小,可能是数值可能是Math.random(),取决于编写比较器的人)。

1

将一个HashMap追加到ArrayList没有“特殊要求”。

而且既不Map也不HashMap实现Comparable,所以如果要排序的ArrayList中,你必须创建自己的Comparator

排序在List其中包含Map将完全相同作为排序List其中包含任何其他内容。

1

你是什么意思“将HashMap附加到ArrayList”?您添加包含HashMap到ArrayList你的任何对象添加到列表

HashMap<String,String> hm = new HashMap<String,String>(); 
arrayListRowsFirst.add(hm); 

你喜欢你解决任何其他类型的数组列表的方式 - 你需要定义一个比较的两个HashMaps这样一比较,并使用Collections.sort与比较器。需要多长时间将取决于您如何比较HashMaps。

1
  1. ,就像您任何其他对象,使用方法add()您将添加包含HashMap到ArrayList。显然它需要是正确的类型,在这种情况下是一个字符串的HashMap。

  2. 您需要创建一个比较器,以便您的HashMap可以排序。

1

声明应该是

List<Map<String, String>> 

1到地图添加到列表中,你只是做

Map<String, String> map = new HashMap<String, String>(); 
list.add(map); 

2对列表进行排序,你会需要一种方法来告诉我们,如果一个地图是“大于”,“小于”或“等于”另一个地图。根据您的需要,可能需要或可能不需要很长时间。它不需要很长时间。