在树形图中,我有每个键都有多个值。我必须只获得与密钥相关的每个值的最大值。任何人都可以帮忙做到这一点..
BufferedReader reader = new BufferedReader(new FileReader("E:\\book\\geneanno.txt"));
Map<String, String> map = new TreeMap<String,String>();
String currentLine;
while ((currentLine = reader.readLine()) != null){
String[] pair = currentLine.split("\\s+");
key = pair[12];
value = pair[4]+" ";
if(map.containsKey(key)){
value += map.get(key);
}
map.put(key,value);
我得到的输出就像这样
密钥:A1CF值:9168 7541 1478 1001
关键:B547价值:1247 7841 1247 3471
但我必须像这样得到输出
键:A1CF值:9168
键:B547值:7841
答案 0 :(得分:2)
您可以使用String
代替连接TreeSet
中的所有值,而不是使用其自然顺序对元素进行排序。
Map<String,Set<Integer>> map = TreeMap<String,TreeSet<Integer>>();
在迭代过程中,您可以按TreeSet#last()
获得最大值,因为您的值Set
是自然排序的。
答案 1 :(得分:1)
除了Subhrajyoti的回答。
您还可以执行以下操作:
Map<String, Integer> map = new TreeMap<String,Integer>();
if(map.get(token) == null)
{
map.put(token,value)
}
else if(map.get(token) < newValue)
{
map.put(token,newValue)
}
基本上发生的事情是,您只会为每个键/值对存储最大值。
这个解决方案只是更有效的内存。