我有一个包含一些字符串的数组tab1和另一个可以包含数组tab1的所有元素的数组。 我该怎么做才能避免重复使用tab1的相同元素:
String[] tab1 ={"AF","HB,"ER"}
String[] tab2 ={"AF","HB,"ER","HO","NF","BB","CD","PO"}
我想说:tab2 = {tab1,“HO”,...} 任何想法?
感谢,
答案 0 :(得分:1)
我该怎么做才能避免重复使用tab1的相同元素
您可以使用List
,此处只有一个对象,例如"AF"
有两个参考
List<String> a = new ArrayList<String>;
List<String> b = new ArrayList<String>;
b.addAll(a);
b.add("HO");
答案 1 :(得分:1)
您可能希望使用Arrays.copyOf()创建一个大小为tab1.length + 5的数组,该数组以tab1的元素开头,然后添加tab2的[手动]元素
简单示例:
String[] tab1 ={"AF","HB","ER"};
String[] tab2 = Arrays.copyOf(tab1, tab1.length+5);
tab2[3] = "HO";
tab2[4] = "NF";
tab2[5] = "BB";
tab2[6] = "CD";
tab2[7] = "PO";
System.out.println(Arrays.toString(tab2));
[当然如果你在第三个数组中有后面的元素,你可以迭代并添加它们]
答案 2 :(得分:0)
我担心这在Java中是不可能的。
但是,您可以使用ArrayList容器,该容器具有从Array复制其所有内容的构造函数。作为奖励,如果添加更多元素,ArrayList会自行调整大小,而数组则不会。
答案 3 :(得分:0)
使用apache commons lang库连接数组。
String[] tab1 ={"AF","HB,"ER"}
String[] tab2 ={"HO","NF","BB","CD","PO"}
String[] concat = (String[]) ArrayUtils.addAll(tab1, tab2);
答案 4 :(得分:0)
Arrays.asList(...).contains(...)
这是你可以使用的最佳解决方案,如果你不想去cocatination。 但我仍然觉得kmb35方式确实是最好的方式
String[] tab1 ={"AF","HB,"ER"}
String[] tab2 ={"AF","HB,"ER","HO","NF","BB","CD","PO"}
String[] concat = (String[]) ArrayUtils.addAll(tab1, tab2);
别忘了使用apache库。 你也可以选择tab2作为
private static final Set<String> tab2 = new HashSet<String>(Arrays.asList(
new String[] {...//tab1 elements//...));
答案 5 :(得分:0)
public class TestBoth {
public static String[] join(String[]... params) {
// calculate size of target array
int size = 0;
for (String[] array : params) {
size += array.length;
}
String[] result = new String[size];
int j = 0;
for (String[] array : params) {
for (String s : array) {
result[j++] = s;
}
}
return result;
}
public static void main(String[] args) {
String[] tab1 = {"AF","HB", "ER"};
String[] mtab = {"HO","NF","BB","CD","PO"};
String[] tab2 = (String[]) join(tab1, mtab);
System.out.println(java.util.Arrays.toString(tab2));
/*
* output : [AF, HB, ER, HO, NF, BB, CD, PO]
*/
}
}
答案 6 :(得分:0)
我可能会按照Jigar Joshi建议的方式进行,如下所示:
import java.util.Arrays;
import java.util.ArrayList;
class Test {
public static void main(String[] args) {
ArrayList<String> tab1 = new ArrayList<String>(Arrays.asList("AF", "HB", "ER"));
ArrayList<String> tab2 = new ArrayList<String>(tab1) {{
addAll(Arrays.asList("HO", "NF", "BB", "CD", "PO"));
}};
}
}
我知道有点奇怪的语法。也许有些人不喜欢它,但它很紧凑,所以我这样做。
答案 7 :(得分:0)
创建一个TreeSet(有序集),然后将其分配给数组。
TreeSet<String> tabSet = new TreeSet<String>();
tabSet.add("e1");
// rest of tab1 elements
String [] tab1 = Collections.toArray(tabSet);
tabSet.add("e2");
// add missing tab2 elements
String [] tab2 = Collections.toArray(tabSet);