将整数添加到数组列表,保留输入顺序
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
是一个有序的集合,这意味着它对元素保持特定的顺序。对于ArrayList
void add(T e)
方法,在列表末尾添加一个元素,void add(int index, T e)
在指定位置插入一个元素。
对于您的问题,您可能只需要将元素添加到列表的末尾即可。
列表接口和所有实现用于按位置而不是按排序管理元素。我的 list.get(3)
但是如果你想要一个实现排序的结构化列表,你有两个解决方案:
- 使用 sortedSet,此集合通过使用整数值实现的自然排序(比较方法)对给定元素进行排序。
使用 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
编写自己的 SortedList
如果您想订购 collection 可能包含重复的。你应该使用 List
。
有两个工具
ArrayList
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]
如何将数字添加到 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
是一个有序的集合,这意味着它对元素保持特定的顺序。对于ArrayList
void add(T e)
方法,在列表末尾添加一个元素,void add(int index, T e)
在指定位置插入一个元素。
对于您的问题,您可能只需要将元素添加到列表的末尾即可。
列表接口和所有实现用于按位置而不是按排序管理元素。我的 list.get(3)
但是如果你想要一个实现排序的结构化列表,你有两个解决方案:
- 使用 sortedSet,此集合通过使用整数值实现的自然排序(比较方法)对给定元素进行排序。
使用 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
编写自己的 SortedList
如果您想订购 collection 可能包含重复的。你应该使用 List
。
有两个工具
ArrayList
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]