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

问题描述 投票:0回答:1

我有两个字符串数组:

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

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

在我的示例中:

  • 元素'd'在arr2中丢失,因此它将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'。

java arrays comparison string-length
1个回答
0
投票

我想您可以使用标准的库函数。

尝试以下操作:

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[]

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.