Java 根据consatnt字符串计数组对字符串数组进行排序

Java 根据consatnt字符串计数组对字符串数组进行排序,java,Java,我在csv文件中有一个巨大的密钥组,超过10L,如下所示 阿巴,100 ABC,200 ABCs,50 ABM,65岁 ABMs,86 ABS,86岁 AC,54岁 美国公民自由联盟,123 第56幕 ACTH,154 公元644年 艺发局,76 加10 我是否需要为上述密钥对创建用户定义对象?创建超过10L的用户定义对象是否会产生任何记忆问题 我的输入字符串看起来像[ABS、AC、ACLU、ABC] 我想要基于计数的输出AC、ABS、ACLU、ABC 如何用Java1.8更简单的方式实现它 谢

我在csv文件中有一个巨大的密钥组,超过10L,如下所示

阿巴,100

ABC,200

ABCs,50

ABM,65岁

ABMs,86

ABS,86岁

AC,54岁

美国公民自由联盟,123

第56幕

ACTH,154

公元644年

艺发局,76

加10

我是否需要为上述密钥对创建用户定义对象?创建超过10L的用户定义对象是否会产生任何记忆问题

我的输入字符串看起来像[ABS、AC、ACLU、ABC]

我想要基于计数的输出AC、ABS、ACLU、ABC

如何用Java1.8更简单的方式实现它


谢谢。

您可以将csv的每一行添加到
列表myList

然后,您必须创建一个自定义比较器,以便根据值对列表进行排序,如下所示

private void customSorting(List<String> myList) {

    Collections.sort(myList, (String s1, String s2) -> {

          String valuePart1 = s1.split(",")[1];
          String valuePart2 = s2.split(",")[1];

          return Integer.valueOf(valuePart1).compareTo(Integer.valueOf(valuePart2));
    });
}
public class MyClass {

     private String key;
     private String value;

     // All the getters, setters, constructors, etc
}
,然后读取csv的每一行,创建一个等效的MyClass POJO并将其添加到
列表myList

您必须为
列表
再次编写自己的自定义比较器,就像我为
列表
编写比较器一样

private void自定义排序(列表myList){
Collections.sort(myList,(MyClass a,MyClass b)->{
返回Integer.valueOf(a.getValue()).compareTo(Integer.valueOf(b.getValue());
});
}

最后,通过只保留键来创建一个新的列表,不清楚您需要什么。多少是10L?10lakhs key pairMy输入字符串是csv文件中的任意键。样本输入格式[ABS、AC、ACLU、ABC]。基于csv计数,需要对上述键进行排序。您尝试过什么吗?我想您误解了这个问题,文件中只包含字符串,在排序之前必须在代码中计算数字(计算每个字符串的出现次数)。@JoakimDanielson如果是这样,请道歉!如果他/她确认我误解了,我当然会删除回复。感谢您的关注;)
private void customSorting(List<MyClass> myList) {

      Collections.sort(myList, (MyClass a, MyClass b) -> {

           return Integer.valueOf(a.getValue()).compareTo(Integer.valueOf(b.getValue()));
      });
}