Java 我想在对数组排序后向数组中添加一个元素
这是我的密码Java 我想在对数组排序后向数组中添加一个元素,java,collections,Java,Collections,这是我的密码 import java.util.*; public class ArrayExample { public static void main(String[] args) { Integer arr[] = {5,4,3,2,15,8,9}; List<Integer> list = Arrays.asList(arr); Collections.sort(list);
import java.util.*;
public class ArrayExample {
public static void main(String[] args) {
Integer arr[] = {5,4,3,2,15,8,9};
List<Integer> list = Arrays.asList(arr);
Collections.sort(list);
System.out.println(list);
list.add(6);// here I am adding 6 to my array.
System.out.println(list);
// Here I should get output as [2,3,4,5,6,8,9,15]
}
}
import java.util.*;
公共类数组示例{
公共静态void main(字符串[]args){
整数arr[]={5,4,3,2,15,8,9};
List=Arrays.asList(arr);
集合。排序(列表);
系统输出打印项次(列表);
list.add(6);//这里我将向数组中添加6。
系统输出打印项次(列表);
//这里我应该得到输出为[2,3,4,5,6,8,9,15]
}
}
如果希望数组保持排序,则必须在每次插入后对其进行排序
但是,使用二进制搜索,您还可以找到项目应该插入的索引i,并使用
list.add(i,6)
将其插入其中。哪个更有效。您不能,因为此声明:
List<Integer> list = Arrays.asList(arr);
或者您可以简单地使用:
List<Integer> list = new ArrayList<>();//declare the list
for(Integer i : arr){
list.add(i);//add element by element to the list
}
List<Integer> list = new ArrayList<>(Arrays.asList(arr));
//----------------------------------^------------------^
List List=newarraylist(Arrays.asList(arr));
//----------------------------------^------------------^
否您不能添加,因为您使用的是Arrays.asList(arr)
通过使用两个数组,您可以不使用列表添加元素:源数组
src
和目标数组dest
。目标数组将比源数组多一个元素。只需将源数组的所有元素复制到目标,然后添加新元素。根据您的帖子标题和帖子正文的不同要求,我添加了两种解决方案:
解决方案1
此解决方案在对数组排序后向数组添加元素,如文章标题中所述。但是请注意,添加的元素位于新数组的尾部
Integer src[] = { 5, 4, 3, 2, 15, 8, 9 };
Integer dest[] = new Integer[src.length + 1];
Arrays.sort(src);
System.out.println(Arrays.toString(src));
// [2, 3, 4, 5, 8, 9, 15]
System.arraycopy(src, 0, dest, 0, src.length);
dest[src.length] = 6;
System.out.println(Arrays.toString(dest));
// [2, 3, 4, 5, 8, 9, 15, 6]
// ^
解决方案2
此解决方案在对数组排序之前向数组添加元素。它包含文章正文中代码注释中提到的预期数组
Integer src[] = { 5, 4, 3, 2, 15, 8, 9 };
Integer dest[] = new Integer[src.length + 1];
System.arraycopy(src, 0, dest, 0, src.length);
dest[src.length] = 6;
Arrays.sort(dest);
System.out.println(Arrays.toString(dest));
// [2, 3, 4, 5, 6, 8, 9, 15]
// ^
另见:
- 中的排序方法
Integer src[] = { 5, 4, 3, 2, 15, 8, 9 };
Integer dest[] = new Integer[src.length + 1];
Arrays.sort(src);
System.out.println(Arrays.toString(src));
// [2, 3, 4, 5, 8, 9, 15]
System.arraycopy(src, 0, dest, 0, src.length);
dest[src.length] = 6;
System.out.println(Arrays.toString(dest));
// [2, 3, 4, 5, 8, 9, 15, 6]
// ^
Integer src[] = { 5, 4, 3, 2, 15, 8, 9 };
Integer dest[] = new Integer[src.length + 1];
System.arraycopy(src, 0, dest, 0, src.length);
dest[src.length] = 6;
Arrays.sort(dest);
System.out.println(Arrays.toString(dest));
// [2, 3, 4, 5, 6, 8, 9, 15]
// ^