gpt4 book ai didi

java - 如何在字符串映射中保留最大值

转载 作者:行者123 更新时间:2023-11-29 05:38:04 24 4
gpt4 key购买 nike

嗨,

我有不合逻辑的字符串列表,例如:

Scanner s = new Scanner(
"m29 523\n" +
"b34 827\n" +
"p42 235\n" +
"b34 294\n" +
"t78 421\n" +
"t78 673\n" +
"c93 173\n" +
"k46 925\n" +
"k46 322\n" +
"x21 644\n");

然后我想将字符串分成两部分 - 空格前后,消除重复项并在重复项(b34,t78,k46)中仅保留最大值(空格后)。我的意思是这样的输出:

                "m29 523"
"b34 827"
"p42 235"
"t78 673"
"c93 173"
"k46 925"
"x21 644"

至于分成两部分并消除重复项,我使用了这样的代码,对我来说没问题:

Map<String, ArrayList<String>> list = new HashMap<String, ArrayList<String>>();
while (s.hasNext()){
String key = s.next();
if(!list.containsKey(key));
list.put(key, new ArrayList<String>());
list.get(key).add(s.next());
}
System.out.println(list);

但不明白我如何在这里实现字符串第二部分的比较以获得最大值? Integer.parseInt(list.get(key))?

最佳答案

一个简单的比较如何:如果键存在,则使用键获取值。使用 Math.MAX 将该值与新值进行比较,然后使用键重新插入。该值将被最大值覆盖。

Map<String, Integer> list = new HashMap<String, Integer>();

String key="FOO";
String s[]={"123","012","789"};
for(String numStr: s)
{
int value = Integer.parseInt(numStr);
if(!list.containsKey(key))
list.put(key, value);
else
list.put(key, Math.max(value, list.get(key)));
}
System.out.println( list.get(key) );

结果是 789

关于java - 如何在字符串映射中保留最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com