java - 在 Java 中处理数组(两列)

标签 java

例如假设我有以下 String

String S = "5,a\n" +
           "6,b\n" +
           "9,a";

格式始终相同 - 一位数字,然后是逗号,然后是一个字符,最后是行结束符。

为了循环我使用的字符串中的每一行

for(String a : S.split("\\n")){}

我想学习按字符分组时数量最多的字符。对于Instance,只有一个“b”,所以值为6;而“a”有两行,所以它的值为 5 + 9 = 14。由于这里 14 是最大值,所以我想找出“a”和 14 并将它们保存在变量中。

最佳答案

您可以执行以下操作:

public static void main (String[] args) throws java.lang.Exception
{
        String S = "5,a\n" +
           "6,b\n" +
           "9,a";

        String[] lines = S.split("\\n");
        Map<String, Integer> map = new HashMap<String, Integer>();
        for( String t : lines )
        {
            String[] e = t.split(",");
            Integer digit = Integer.parseInt(e[0]);
            String c = e[1];
            if ( map.get(c) != null )
            {
                Integer val = map.get(c);
                val += digit;
                map.put( c, val );
            }
            else
            {
                map.put( c, digit );
            }

        }

        int max = 0;
        String maxKey = null;
        for ( String k : map.keySet() )
        {
            if ( map.get(k) > max )
            {

                max = map.get(k);
                maxKey = k;
            }
        }

        System.out.println("The maximum key is : " + maxKey );
        System.out.println("The maximum value is : " + max );
    }

输出是:

The maximum key is : a
The maximum value is : 14

关于java - 在 Java 中处理数组(两列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37402787/

相关文章:

java - 为什么我的代码中出现 java.lang.StackOverflowError?

java - 使用信号量的变量结果

java - 在 JTable 中加载数据时出现问题

java - 我如何使用 Spring 的 RestTemplate 执行与此 curl 命令等效的操作?

java - JVM 崩溃 :fatal error has been detected by the Java Runtime Environment

java - 同步一组线程

java - 为什么 httpbuilder 没有给出准确的 JSON 输出?

java - 我们如何部署二进制依赖项?

java - 正则表达式查找数字后跟字母

java - 如何在检索期间忽略 hibernate 中自动生成的键