将整数添加到数组列表,保留输入顺序

Adding integers to an array list, preserving order of input

如何将数字添加到 ArrayList,但保持它们添加的顺序?

Ex) Arraylist contains: [5, 3, 9]...我想添加 [1, 2, 3] 使修改后的列表 = [1, 2, 3, 5, 3, 9]

Ex2) Arraylist 包含:[]...我想添加 [1, 2, 3] 使修改后的列表 = [1, 2, 3]

我将一直使用一个静态数组列表

用户将从命令行输入命令:"a X1 X2 X3...Xn" 其中 'a' 是命令,X1 - Xn 是要添加到列表中的未知数量的整数

我不确定我是否完全理解你的问题,但你是否尝试过简单地使用:

arrayList.addAll(0, newDataUserProvided); 

它应该可以解决问题 - 新元素将始终添加到列表的前面。

对于ArrayList<T>,方法void add(int index, T e)实际上是在索引index处插入元素e。 索引必须在 [0, length] 之间 为了实现你想要的,只需做:

ArrayList<Integer> myList; // contains [5, 3, 9]
myList.add(0, 1);
myList.add(1, 2);
myList.add(2, 3);
// myList is now [1, 2, 3, 5, 3, 9]

一个List是一个有序的集合,这意味着它对元素保持特定的顺序。对于ArrayListvoid add(T e)方法,在列表末尾添加一个元素,void add(int index, T e)在指定位置插入一个元素。

对于您的问题,您可能只需要将元素添加到列表的末尾即可。

列表接口和所有实现用于按位置而不是按排序管理元素。我的 list.get(3)

但是如果你想要一个实现排序的结构化列表,你有两个解决方案:

  1. 使用 sortedSet,此集合通过使用整数值实现的自然排序(比较方法)对给定元素进行排序。
  2. 使用 collection.sort() 对您的最终列表进行排序(当您有一个大列表时,此解决方案很糟糕,因为它会导致性能问题)

    列表 myList = new ArrayList(); myList.add(2); myList.add(1); myList.add(3); Collections.sort(我的名单); for (Integer i : strings){ System.out.println(i); } // 打印出 1,2 和 3

  3. 编写自己的 SortedList

如果您想订购 collection 可能包含重复的。你应该使用 List。 有两个工具

  1. ArrayList

  2. LinkedList

如果您想根据不包含重复项的插入内容进行排序 collection。您应该使用 Set 的工具之一,即 LinkedHashSet。 有一个工具

Java 8 中,您可以使用 flatMap 从列表流创建一个流

代码:

    List<Integer> list1 = Arrays.asList(1,2,3);
    List<Integer> list2 = Arrays.asList(4,5,6);
    List<Integer> finalList = Stream.of(list1 , list2)
                                    .flatMap( listF -> listF.stream())
                                    .collect(Collectors.toList());
    System.out.println(finalList);

输出:

[1, 2, 3, 4, 5, 6]