繁体   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