Java ArrayList:从包含 HashMap 的 ArrayList 中获取不同的值
Posted
技术标签:
【中文标题】Java ArrayList:从包含 HashMap 的 ArrayList 中获取不同的值【英文标题】:Java ArrayList: Get Distinct Values from ArrayList which contain HashMap 【发布时间】:2011-05-14 11:21:49 【问题描述】:请参阅下面描述的问题定义。 我有包含 HashMap 的 ArrayList。在 HashMap 中存在一个或多个键值对。 ArrayList 包含以下内容:
HashMap1 包含 键:column1 值:0001 键:column2 值:1 键:column3 值:1
HashMap2 包含 键:column1 值:0001 键:column2 值:1 键:column3 值:2
HashMap1 和 HashMap2 都保存在 ArrayList 中。
现在我输入一个类似 (column1, column2) 的字符串 然后我需要像这样的输出 创建包含以下数据的新 ArrayList:
HashMap1 包含 键:column1 值:0001 键:column2 值:1
当我输入类似 (column1, column3) 的字符串时 创建包含以下数据的新 ArrayList:
HashMap1 包含 键:column1 值:0001 键:column3 值:1
HashMap2 包含 键:column1 值:0001 键:column3 值:2
即我想根据输入字符串从 ArrayList 中获取不同的值。 请在逻辑上帮助我,我怎样才能达到同样的效果。
【问题讨论】:
我已经重读了好几遍了,我仍然没有遵循... 【参考方案1】:你能做的是;
for each map in the list.
copy the map.
map.keySet().retainAll(keys-you-want-to-keep)
set-of-results.add(map)
这样你将拥有一组子地图。
【讨论】:
【参考方案2】:没有什么比代码更严格的了。所以这里是做你想做的事。特别看一下 selectColumns 方法。地图列表存储在类字段list中。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Matrix
private List<Map<String, String>> list = new ArrayList<Map<String,String>>();
public Matrix(int numRows)
for (int i = 0; i < numRows; i++)
list.add(new HashMap<String, String>());
private void set(int row, String string, String string2)
list.get(row).put(string, string2);
public Matrix selectColumns(String... columns)
Matrix select = new Matrix(list.size());
for (String column : columns)
for (int row = 0; row < list.size(); row++)
select.set(row, column, list.get(row).get(column));
return select;
public static Matrix createDummy(int dim)
Matrix matrix = new Matrix(dim);
for (int i = 0; i < dim; i++)
for (int j = 0; j < dim; j++)
matrix.set(i, "col" + j, "val:" + i + "|" + j);
return matrix;
public static void main(String[] args)
Matrix mainMatrix = Matrix.createDummy(3);
System.out.println(mainMatrix.list);
System.out.println(mainMatrix.selectColumns("col1", "col2").list);
【讨论】:
以上是关于Java ArrayList:从包含 HashMap 的 ArrayList 中获取不同的值的主要内容,如果未能解决你的问题,请参考以下文章