简体   繁体   English

在集合末尾添加新行

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

I would like to use unsorted generic collection to store values. 我想使用未排序的通用集合来存储值。

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 ) );

I suppose the elements would be 3,2,4,1. 我想元素将是3,2,4,1。 Then I would like to create an array from this set: 然后,我想从这个集合创建一个数组:

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

And I'm surprised because the elements in arr are in different order than I put into map. 我很惊讶,因为arr中的元素与我放入地图中的顺序不同。 The deal is to get an array like this: 要做的是得到一个像这样的数组:

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

What should I do for this? 我该怎么办?

HashSet does not guarantee that the order will remain same. HashSet不保证顺序将保持不变。 If you want to maintain order then use ArrayList . 如果要保持顺序,请使用ArrayList

Sets are unordered. 集是无序的。 It is not guaranteed to maintain the order of the elements. 不保证维持元素的顺序。 You need to use a list if the order you added the elements should remain the same. 如果添加元素的顺序应保持不变,则需要使用列表。

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 ) );

use LinkedHashSet instead of HashSet 使用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