2
votes

Comment convertir ArrayList imbriqué dans Array?

Je dois convertir une ArrayList de ArrayList en Array.

 TockaXY[] arrayOfClusters = clustersPorazdeljeni.toArray(new TockaXY[centers.size()]);

Je sais qu'il est possible de convertir une seule ArrayList en Array comme

List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>(centers.size());


1 commentaires

Veuillez lire: Pourquoi est-ce possible de… »une question mal formulée? . Pour répondre à votre question: oui, c'est possible.


3 Réponses :


3
votes

Vous pouvez utiliser flatMap:

List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();
TockaXY[] flattened = clustersPorazdeljeni.stream()
        .flatMap(x -> x.stream())
        .toArray(x -> new TockaXY[0]);


0 commentaires

2
votes

Il est possible d'utiliser Java Stream et Stream :: flatMap :

List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();

TockaXY[] strings = clustersPorazdeljeni.stream()
    .flatMap(Collection::stream)
    .toArray(TockaXY[]::new);


0 commentaires

0
votes

Il existe une alternative linéaire pour flatMap ():

TockaXY[] arrayOfClusters = clustersPorazdeljeni.stream().flatMap(Collection::stream).toArray(TockaXY[]::new);

Ou avec flatMap:

    List<List<TockaXY>> clustersPorazdeljeni = new ArrayList<>();

    List<TockaXY> flatArray = new ArrayList<>();
    clustersPorazdeljeni.forEach(flatArray::addAll);
    TockaXY[] arrayOfClusters = flatArray.toArray(new TockaXY[0]);


0 commentaires