4

私は2つの文字列配列を持っています。たとえばA = {"ABC", "XYZ", "MNO"}B = {"ABC", "PQR", "XYZ"}今、1つの文字列配列が必要です{"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()]);
    }

}

を使用するSet場合、配列のような順序付けを期待している場合は、LinkedHashSet を使用していることを確認してください。要素は、配置したインデックスにとどまります。Set-s は要素を内部的に並べ替える傾向があり、探しているものではない可能性があります。

于 2012-04-26T09:28:36.207 に答える
1

ハッシュセットを使用できます

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ライブラリから1行のソリューションを見つけました。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 に答える