我有两个字符串数组。例如A = {"ABC", "XYZ", "MNO"}
,B = {"ABC", "PQR", "XYZ"}
现在我想要一个字符串数组{"ABC", "XYZ", "MNO", "PQR"}
我怎样才能做到这一点?请帮我。
我有两个字符串数组。例如A = {"ABC", "XYZ", "MNO"}
,B = {"ABC", "PQR", "XYZ"}
现在我想要一个字符串数组{"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()]);
}
}
使用 a 时Set
,请确保您使用的是 LinkedHashSet,如果您期望类似数组的排序 - 其中元素保留在您放置它们的索引处。Set
-s 倾向于在内部重新排序元素,这可能不是您想要的。
你可以使用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());
我从旧的 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”]