需要建议以构建以下数据结构
M M
A1 A2 A3 A4 A5
a b c
a b d
a e b
a f b
我的数据如下所示。标记为M
的列一起构成唯一的行。现在我应该能够读取csv行并在上面的数据结构中添加一行。如果我再次遇到相同的唯一行,我需要以某种方式合并相同的唯一行,并且最后一个相同的uniqe行将获胜并继承缺失值的值。
与上面的例子一样
我有多行是相同的唯一行,因为标有M
的所有字段都相同。所以上表中的最终表格如下所示
M M
A1 A2 A3 A4 A5
a f b d c
如果有任何数据结构来保存这样的结构,我想知道什么?我不想重新发明新的?此外,如果我可以通过一些地图和列表组合实现这一点。标题(A1,A2,A3)是动态的,未知。我使用csv reader从CSV读取了一行。
答案 0 :(得分:0)
您可以使用HashMap,其中键是所有M列的串联。唯一的技巧是使用一个不能出现在任何M列中的连接分隔符,以避免由于一个或多个M列具有空值而导致的问题。
当你从CSVReader获取数据时,你会这样做:
HashMap<String, ArrayList<String>> hm = new HashMap<String,ArrayList<String>>();
while (csvreader.hasNext()) {
String line = csvreader.lineReader().readLine();
String[] fields = csvreader.parser.parseLine(line);
String key = fields[0] + ":" + fields[2];
ArrayList<String> exists = hm.get(key);
if (exists == null)
hm.put(key, new ArrayList<String>(Arrays.asList(fields)));
else
for (int i=0; i<fields.length; i++) // works only if lines are homogeneous
if (fields[i] != null && fields[i].length() > 0)
exists.set(i, fields[i]); // set values only if they're not null
}