4

我有两个字符串数组。例如A = {"ABC", "XYZ", "MNO"}B = {"ABC", "PQR", "XYZ"}现在我想要一个字符串数组{"ABC", "XYZ", "MNO", "PQR"}

我怎样才能做到这一点?请帮我。

4

4 回答 4

6

获取一个HashSet并将两个数组中的所有字符串都放入其中。集合不允许复制,因此它只有唯一值。完成后,您可以使用Collections.toArray()为自己获取一个字符串数组。

编辑:您似乎并不遵循元素的排序方式,但是,根据 carlspring 的建议,如果您是,只需将 替换HashSetLinkedHashSet

于 2012-04-26T09:11:11.610 回答
2

这是如何做到的:

public class Foo
{

    public static String[] array1 = { "abc", "def", "ghi" };
    public static String[] array2 = { "xyz", "abc" };


    public static void main(String[] args)
    {
        System.out.println("Using List: " + Arrays.toString(usingList()));
        System.out.println("Using Set: " + Arrays.toString(usingSet()));
    }

    public static String[] usingList()
    {
        List<String> list = new ArrayList<String>();
        list.addAll(Arrays.asList(array1));
        list.addAll(Arrays.asList(array2));

        return list.toArray(new String[list.size()]);
    }

    public static String[] usingSet()
    {
        Set<String> set = new LinkedHashSet<String>();
        set.addAll(Arrays.asList(array1));
        set.addAll(Arrays.asList(array2));

        return set.toArray(new String[set.size()]);
    }

}

使用 a 时Set,请确保您使用的是 LinkedHashSet,如果您期望类似数组的排序 - 其中元素保留在您放置它们的索引处。Set-s 倾向于在内部重新排序元素,这可能不是您想要的。

于 2012-04-26T09:28:36.207 回答
1

你可以使用HashSet

String[] str={"abc","def","ghi"};
    String[] str1={"xyz","abc"};
    Set<String> set=new HashSet<String>();
    for (int i = 0; i < str.length; i++) {
        set.add(str[i]);
    }
    for (int i = 0; i < str1.length; i++) {
        set.add(str1[i]);
    }
    System.out.println(set.toString());
于 2012-04-26T09:11:52.983 回答
1

我从旧的 Apache Commons Lang 库中找到了一个单行解决方案。ArrayUtils.addAll(T[], T...)。代码:

String[] both = ArrayUtils.addAll(first, second);

例如:: ArrayUtils.addAll(["a", "b", "c"], ["1", "2", "3"]) = ["a", "b", "c", " 1”、“2”、“3”]

于 2012-04-26T09:22:06.283 回答