【发布时间】:2018-11-04 11:58:21
【问题描述】:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Delete
{
public static void main(String[] args)
{
List<List<String>> list = new ArrayList<>();
list.add(List.of("A","B","C","R"));
list.add(List.of("E","F","G","F"));
list.add(List.of("A","B","C","D"));
System.out.println(list.stream().distinct().count());
Map<String, Long> countMapOfColumn = list.stream()
.filter(innerList -> innerList.size() >= 3)
.map(innerList -> innerList.get(3 - 1))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(countMapOfColumn.keySet());
}
}
我想找出第 3 列的唯一元素 "C","G" 并且在第 3 列中有 2 唯一元素。
这可以使用loop 来完成,但我不能使用循环。使用 java stream 可能有解决办法。
此外,我如何才能一次在 1,2 列中获取具有 "A","B" 的行数,并且通常对于 N 列?
【问题讨论】:
标签: java arraylist lambda java-8 java-stream