LinkedHashSetのへのストリーム

stakowerflol:

私は.CSVの最初の行はLinkedHashSetのの最初の要素でなければなりませんので、自然な順序でLinkedHashSetのに.CSV保存したいです。

このようなファイルを見て:

java  
c  
c++  
assembly language  
swift  

そして、このように私のコード:

public class test {   
    public static void main(String[] args) throws IOException {         
         final Charset ENCODING = Charset.forName("Cp1250");
         Path fileToLoad = Paths.get("src/main/resources/test.csv");
         Set<String> x = Files.lines(fileToLoad, ENCODING)
                 .map(Function.identity())
                 .collect(Collectors.toSet());

         Iterator<String> it = x.iterator();
         while(it.hasNext()) {
             System.out.println(it.next());
         }
    }
}

しかし、それは間違った順序を返します。

assembly language
c++
java
c
swift

私は、そのストリームがちょうどHashSetのようにそれを保存だと思います。

それはストリームとLinkedHashSetのようにそれを保存することは可能ですか?

GhostCat敬礼モニカC.:

あなたは、単にそのファクトリメソッドによって作成された特定のタイプを(それは知りませんが保証返すように設定し、他には何を)。

唯一確実な方法は、実際にすることで制御してストリーム動作を終了することで、何が起こりますか

... collect( Collectors.toCollection( LinkedHashSet::new ) );

おすすめ

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