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

时间:2015-03-09 21:10:18

标签: java arraylist static

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

Ex)Arraylist包含:[5,3,9] ...我想添加[1,2,3]来修改列表= [1,2,3,5,3,9]

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

我将一直使用一个静态arraylist

用户将通过输入以下内容从命令行输入命令:" a X1 X2 X3 ... Xn"在哪里' a'是命令,X1-Xn是要添加到列表中的未知数量的整数

4 个答案:

答案 0 :(得分:6)

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

arrayList.addAll(0, newDataUserProvided); 

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

答案 1 :(得分:0)

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

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是有序集合,它意味着它保留元素的特定顺序。对于ArrayList void add(T e)方法,在列表末尾添加一个元素,void add(int index, T e)在指定位置插入一个元素。

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

答案 2 :(得分:0)

列表界面ans allerimplémentations用于按位置管理元素,而不是按排序。我的list.get(3)

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

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

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

  3. 编写自己的SortedList

答案 3 :(得分:0)

如果您想要有可能包含重复的有序集合。您应该使用List

有两种工具
  1. ArrayList

  2. LinkedList

  3. 如果您想根据可能不包含重复的插入来订购集合。您应该使用Set LinkedHashSet的工具之一。 有一个工具

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

    enter image description here

    代码:

        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]