Intersecção entre listas aninhadas java 8 fluxos

HashimR:

Eu tenho uma lista aninhada de Long. por exemplo:

List<List<Long>> ids = [[1,2,3],[1,2,3,4],[2,3]];

Existe uma maneira usando correntes para criar uma nova lista de itens que estão presentes em todas as listas:

List<Long> result = [2,3];
Ruslan:

Há solução concisa bastante sem stream:

List<Long> result = new ArrayList<>(ids.get(0));
ids.forEach(result::retainAll);

System.out.println(result);

Atualizar : como foi mencionado nos comentários por @ernest_k para evitar o supérfluo retainAll()chamada você pode obter sublista antes:

ids.subList(1, ids.size()).forEach(result::retainAll); 

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=177068&siteId=1
Recomendado
Clasificación