如何向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是要添加到列表中的未知数量的整数
答案 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)
但是如果你想拥有一个实现排序的结构化列表,你就有了两个解决方案:
使用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
编写自己的SortedList
答案 3 :(得分:0)
如果您想要有可能包含重复的有序集合。您应该使用List
。
ArrayList
LinkedList
如果您想根据可能不包含重复的插入来订购集合。您应该使用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]