如何从Java中的List <String []>获得具有频率的唯一值?

时间:2019-10-10 23:21:31

标签: java arrays string list

我想从List<String[]>获取唯一值并将它们存储在新列表中(或HashMap<String, Integer>,其中String是唯一值,而Integer是它的数量List<String[]>中出现的次数。如何提取唯一值?

2 个答案:

答案 0 :(得分:3)

您可以使用Collectors.groupingBy

Map<String, Long> map = abc.stream()
                           .flatMap(Arrays::stream)
                           .collect(Collectors.groupingBy(Function.identity(),
                                       Collectors.counting()));

答案 1 :(得分:0)

如果您使用的是Java 8或更高版本,则非常简单。 (使用其他答案进行更正)

List<String[]> abc = new ArrayList<>();
String[] string1 = {"123", "567"};
String[] string2 = {"123", "456"};
abc.add(string1);
abc.add(string2);

List<String> newList = abc.stream()
        .flatMap(Arrays::stream)
        .distinct()
        .collect(Collectors.toList());

Map<String, Long> hashMap = abc.stream()
            .flatMap(Arrays::stream)
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));