gpt4 book ai didi

java - 通过比较两个不同长度的 String 数组来创建新数组

转载 作者:行者123 更新时间:2023-12-01 17:21:00 24 4
gpt4 key购买 nike

我有两个字符串数组:

arr1 = {"i", "b", "v", "d", "y", "z", "u", "a"}
arr2 = {"i", "b", "v", "y", "u", "z", "a"}

我想从“arr1”和“arr2”创建一个新数组“arr3”。诀窍是,如果 arr2 中缺少元素,那么我想保留一个空元素,并且保持 arr2 中元素的相同顺序。

在我的例子中:

  • arr2 中缺少元素“d”,因此它将 arr3[i] = ""
  • 元素“u”和“z”与“arr1”相比是相反的,但这并不重要,因为我想保持“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);
}

如果需要,您可以使用另一个数组列表(而不是 array2)来添加空字符。您还可以转换最终的ArrayList进入String[]如果这就是您所需要的。

希望这有帮助!

更新:虽然我删除了流,但 forEach 中有一个 lambda 表达式,它不适用于 1.7。 PFB 的 forEach 部分与 Java 1.7 兼容的纯 java 代码。

    // Without using Lambdas
for(Object element : array1)
{
String s = (String) element;
if(!array2.contains(s))
{
int elementPosition = array1.indexOf(element);
array2.add(elementPosition, "");
}
}

关于java - 通过比较两个不同长度的 String 数组来创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com