私は2つの文字列配列を持っています。たとえばA = {"ABC", "XYZ", "MNO"}
、B = {"ABC", "PQR", "XYZ"}
今、1つの文字列配列が必要です{"ABC", "XYZ", "MNO", "PQR"}
これどうやってするの?私を助けてください。
私は2つの文字列配列を持っています。たとえばA = {"ABC", "XYZ", "MNO"}
、B = {"ABC", "PQR", "XYZ"}
今、1つの文字列配列が必要です{"ABC", "XYZ", "MNO", "PQR"}
これどうやってするの?私を助けてください。
HashSetを取得し、その中の両方の配列からすべての文字列をスローします。セットは複製を許可しないため、一意の値のみが含まれます。完了したら、Collections.toArray()を使用して、結果として文字列配列を取得できます。
編集:要素が順序付けられた方法を実行しているようには見えませんが、carlspringの提案に従って、実行している場合は、をHashSet
LinkedHashSetに置き換えてください。
これを行う方法は次のとおりです。
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 は要素を内部的に並べ替える傾向があり、探しているものではない可能性があります。
ハッシュセットを使用できます
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());
古き良き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"]