问题描述
public class MergeNames {
public static void main(String[] args) {
String[] names1 = new String[] { "Ava","emma","Olivia" };
String[] names2 = new String[] { "Olivia","Sophia","emma" };
int na1 = names1.length;
int na2 = names2.length;
String [] result = new String[na1 + na2];
System.arraycopy(names1,result,na1);
System.arraycopy(names2,na1,na2);
System.out.println(Arrays.toString(result));
}
}
我创建了两个数组对象字符串并分配相同的字符串值。之后需要将两个String数组对象合并成另一个String数组对象。
注意:没有重复
我想要像这样的输出 [“艾娃”、“艾玛”、“奥利维亚”、“索菲亚”、“艾玛”]
解决方法
您可以使用 Java Stream API
和 Stream.of()
。请参阅示例以更好地理解。
参考代码
public class Main {
public static <T> Object[] mergeArray(T[] arr1,T[] arr2)
{
return Stream.of(arr1,arr2).flatMap(Stream::of).distinct().toArray();
}
public static void main(String[] args) {
String[] names1 = new String[] { "Ava","Emma","Olivia" };
String[] names2 = new String[] { "Olivia","Sophia","Emma" };
Object [] result = mergeArray(names1,names2);
System.out.println(Arrays.toString(result));
}
}
输出
[Ava,Emma,Olivia,Sophia]
,
你犯了一个小错误
String [] result = new String[na1 + na2];
不是int