ABC:
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"
し、そこにある2
3列でユニークな要素が。
これは、使用して行うことができますloop
が、私はループを使用することはできません。Javaを使用すると、stream
解決策があるかもしれません。
また、どのように私が持つ行数を取得することができます"A","B"
列に1,2
するための時間で、一般的にN
列を?
buræquete:
あなたの特定のデータ構造については、
Map<String, Long> countMapOfColumn = list.stream()
.filter(innerList -> innerList.size() >= column)
.map(innerList -> innerList.get(column - 1))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
どこcolumn = 3
であなたのマップを取得する{"C", "G"}
キーセットとして、および値は、あなたに与えられた列の各文字のカウントを与えます。それだけで何のn番目の列を持っていない行をスキップしますので、それはまた、不均一な行列のために動作します。
任意の列のユニーク数は、収集方法のマップを結果の大きさでしょう。 countMapOfColumn.size()
個々の文字カウントを取得するには、カウントを取得するために、たとえば、入力としてキーと結果のマップを使用C
中column = 3
、使用countMapOfColumn.get("C")
戻ります、2
しかし、私はむしろ、グァバの使用したいTable
、あなたが直接、それがあるだけで、任意の手間をかけずに任意の行または列を選択し、n番目の列を取得し、私たちの重複をフィルタリングすることができます。
更新
連続したリストで始まる行の数を取得するにはlist = {"A", "B"}
、
List<String> startingList = Arrays.asList("A", "B");
Long count = list.stream()
.filter(innerList -> innerList.size() >= startingList.size()
&& innerList.subList(0, startingList.size()).equals(startingList))
.count();