我想說的第一點是,看起來使用Set
會更好,因爲它不允許有重複的元素。換句話說,這樣做的:
Set<Long> ids = new HashSet<Long>();
ids.add(Long.valueOf(1));
ids.add(Long.valueOf(1));
System.out.println(ids.size());
將打印1
,不2
像它會爲List
。
我不確定你在找什麼確切的操作,但有三種可能的選擇:聯合,交叉和相對補償。有關其正式定義和維恩圖,請參見this Wikipedia section on the Set page。
聯盟
結果:A
和B
所有元素將在C
。
要執行此操作:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.addAll(b);
交叉口
結果:僅在兩個A
和B
元件將在C
。
要執行此操作:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.retainAll(b);
相對補
結果:C
將包含不同之處在於在B
雞舍A
所有元素要執行此操作:
Set<Long> a = ... ;
Set<Long> b = ... ;
Set<Long> c = new HashSet<Long>(a);
c.removeAll(b);
此外,轉換一個List
爲Set
:
List<Long> idsAsList = ... ;
Set<Long> idsAsSet = new HashSet<Long>(idsAsList);
在磁盤陣列轉換爲Set
,你必須做不同的事情取決於如果您有一個long[]
或Long[]
上(注意瓶蓋)。對於long[]
,你必須手動複製:如果是Long[]
long[] idsAsArray = ... ;
Set<Long> idsAsSet = new HashSet<Long>();
for (long l : idsAsArray) {
idsAsSet.add(Long.valueOf(l));
}
,您可以使用Arrays.asList
:
Long[] idsAsArray = ... ;
Set<Long> ids = new HashSet<Long>(Arrays.asList(idsAsArray));
你能告訴更多的代碼。由於這部分代碼似乎是正確的。除非有一個與'addThese.add(沒問題)'或'的是ListOfOrgIds'我們不知道他們是怎麼看.. –
順便說一句,爲什麼你創建了一個'長'列表',即使你正在給它們加'整數'值? –
似乎沒有任何一個 –