我有两个字符串数组:
arr1 = {"i", "b", "v", "d", "y", "z", "u", "a"}
arr2 = {"i", "b", "v", "y", "u", "z", "a"}
我想从“ arr1”和“ arr2”创建一个新的数组“ arr3”。诀窍是,如果arr2中缺少元素,那么我想保留一个空元素,并且还要在arr2中保留元素的相同顺序。
在我的示例中:
这是我的代码:
public static void main(String[] args){
String[] arr1 = {"q", "b", "v", "d", "y", "z", "u", "a"};
String[] arr2 = {"q", "b", "v", "y", "u", "z", "a"};
String[] arr3 = new String[arr1.length];
for(int i = 0;i<arr1.length ; i++) {
if(getIndex(arr1[i], arr2) == -1)
arr3[i] = "";
else
if (i < arr2.length)
arr3[i] = arr2[i];
}
}
public static int getIndex(String element, String[] array) {
for(int i=0;i<array.length;i++) {
if(array[i].contentEquals(element))
return i;
}
return -1;
}
上面的代码的输出是:
arr3 = {"q", "b", "v", "", "u", "z", "a"}
arr2中缺少元素'y'。
我想您可以使用标准的库函数。
尝试以下操作:
public static void main(String[] args)
{
String[] arr1 = {"q", "b", "v", "d", "y", "z", "u", "a"};
String[] arr2 = {"q", "b", "v", "y", "u", "z", "a"};
String[] arr3 = new String[arr1.length];
List array1 = new ArrayList(Arrays.asList(arr1));
List array2 = new ArrayList(Arrays.asList(arr2));
array1.forEach(element -> {
if(!array2.contains(element))
{
int elementPosition = array1.indexOf(element);
array2.add(elementPosition, "");
}
});
// prints [q, b, v, , y, u, z, a]
System.out.println(array2);
}
如果需要,可以使用另一个arraylist(而不是array2)添加空字符。如果需要,您也可以将最终的ArrayList
转换为String[]
。
希望这会有所帮助!