联合操作两个字符串数组 - Java

时间:2012-04-26 09:07:29

标签: java

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

的字符串数组

我该怎么做?请帮帮我。

4 个答案:

答案 0 :(得分:6)

获取HashSet并从其中的两个数组中抛出所有字符串。集不允许复制,因此它只具有唯一值。完成后,您可以使用Collections.toArray()来获取字符串数组。

编辑:您似乎没有按照订购元素的方式进行操作,但是,根据carlspring的建议,如果您这样做,只需将HashSet替换为LinkedHashSet。< / p>

答案 1 :(得分: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()]);
    }

}

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

答案 2 :(得分: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());

答案 3 :(得分:1)

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

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

ex :: ArrayUtils.addAll([“a”,“b”,“c”],[“1”,“2”,“3”])= [“a”,“b”,“c “,”1“,”2“,”3“]