どのようにJavaでの2DのArrayListの列の一意の値を見つけるには?

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"し、そこにある23列でユニークな要素が。

これは、使用して行うことができます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()

個々の文字カウントを取得するには、カウントを取得するために、たとえば、入力としてキーと結果のマップを使用Ccolumn = 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();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=177644&siteId=1