簡體   English   中英

在集合末尾添加新行

[英]Add a new line at the end of collection

我想使用未排序的通用集合來存儲值。

Set<Integer> map = new HashSet<Integer>();
map.Add( new Integer( 3 ) );
map.Add( new Integer( 2 ) );
map.Add( new Integer( 4 ) );
map.Add( new Integer( 1 ) );

我想元素將是3,2,4,1。 然后,我想從這個集合創建一個數組:

Integer[] arr = ( Integer[] )map.toArray( new Integer[map.size()] );

我很驚訝,因為arr中的元素與我放入地圖中的順序不同。 要做的是得到一個像這樣的數組:

arr[0] = 3;
arr[1] = 2;
arr[2] = 4;
arr[3] = 1;

我該怎么辦?

HashSet不保證順序將保持不變。 如果要保持順序,請使用ArrayList

集是無序的。 不保證維持元素的順序。 如果添加元素的順序應保持不變,則需要使用列表。

List<Integer> map = new ArrayList<Integer>();
map.add( new Integer( 3 ) );
map.add( new Integer( 2 ) );
map.add( new Integer( 4 ) );
map.add( new Integer( 1 ) );

使用LinkedHashSet而不是HashSet

    Set<Integer> map = new LinkedHashSet<Integer>();
    map.add( new Integer( 3 ) );
    map.add( new Integer( 2 ) );
    map.add( new Integer( 4 ) );
    map.add( new Integer( 1 ) );

    Integer[] arr = ( Integer[] )map.toArray( new Integer[map.size()] );

    System.out.println(Arrays.toString(arr));

您可以使用LinkedHashSet保留輸入順序:

Set<Integer> map = new LinkedHashSet<Integer>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM