我有两个字符串数组。例如A = {"ABC", "XYZ", "MNO"}
和B = {"ABC", "PQR", "XYZ"}
现在我想要一个具有{"ABC", "XYZ", "MNO", "PQR"}
我该怎么做?请帮帮我。
答案 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“]