[英]Compare two arraylist
我有兩個Arraylists:
ArrayList a1 = new ArrayList();
a1.add("5");
a1.add("10");
a1.add("20");
a1.add("50");
a1.add("100");
a1.add("500");
a1.add("1000");
ArrayList a2 = new ArrayList();
a2.add("50");
a2.add("500");
a2.add("1000");
我如何比較這兩個arraylists並添加到新的arraylist(a3)中,如果a1存在於a1中則為1,如果不存在則為0,因此結果將在下面為arraylist a3?
a3[0] = 0
a3[1] = 0
a3[2] = 0
a3[3] = 1
a3[4] = 0
a3[5] = 1
a3[6] = 1
提前致謝
首先,我建議你使用泛型 。 其次,因為a2
可能是一個Set
而不是。 第三,您可能希望從String
更改為Integer
(因為它們都是整數)。
但是對於你的例子,這是一種方法:
ArrayList<Integer> a3 = new ArrayList<Integer>();
for (String a : a1)
a3.add(a2.contains(a) ? 1 : 0);
完整示例(使用HashSet
和Integer
類型):
public static void main(String... args) {
List<Integer> a1 = Arrays.asList(5, 10, 20, 50, 100, 500, 1000);
Set<Integer> a2 = new HashSet<Integer>(Arrays.asList(50, 500, 1000));
ArrayList<Integer> a3 = new ArrayList<Integer>();
for (Integer a : a1)
a3.add(a2.contains(a) ? 1 : 0);
System.out.println(a3);
}
輸出:
[0, 0, 0, 1, 0, 1, 1]
這樣做。
請注意,你的問題指定int[]
作為輸出類型,這不是我所選擇的 - 列表可能會更好,但是這個答案符合你的要求,不像我到目前為止看到的其他答案。
public static void main(String[] args) {
ArrayList<String> a1 = new ArrayList<String>();
a1.add("5");
a1.add("10");
a1.add("20");
a1.add("50");
a1.add("100");
a1.add("500");
a1.add("1000");
ArrayList<String> a2 = new ArrayList<String>();
a2.add("50");
a2.add("500");
a2.add("1000");
int[] matches = new int[a1.size()];
int i = 0;
for (String s : a1)
matches[i++] = a2.contains(s) ? 1 : 0;
System.out.println(Arrays.toString(matches));
}
輸出:
[0, 0, 0, 1, 0, 1, 1]
您可以使用contains(Object o) method of ArrayList
來檢查元素是否存在於第二個arraylist中,並相應地將該元素添加到第三個列表中,如:
for(String temp: a1)
{
if(a2.contains(temp))
{
a3.add(1);
}
else
{
a3.add(0);
}
}
Psuedo代碼
Check both a1 and a2 for length. say a1 is longest
a3 = new arraylist(a1.length)
for(i=0 to a2.length)
if(a1.contains(a2.get(i))
a3.get(i)++;
像這樣的東西:
ArrayList<Integer> a3 = new ArrayList<Integer>();
for (String v : a1) {
if (a2.contains(v)) {
a3.add(1);
} else {
a3.add(0);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.