我打破了我的想法,以找到解決以下問題。 我有4個不同的ArrayList從數據庫中獲取它們的值。 他們可以從0(包括)的大小,直到永遠。 每個列表也可能具有不同的大小和值。 我試圖有效地做的是: 比較所有非0大小的列表,並檢查它們是否有一些常見的整數和那些值。ArrayList比較和獲取共享值
任何想法? 謝謝!
我打破了我的想法,以找到解決以下問題。 我有4個不同的ArrayList從數據庫中獲取它們的值。 他們可以從0(包括)的大小,直到永遠。 每個列表也可能具有不同的大小和值。 我試圖有效地做的是: 比較所有非0大小的列表,並檢查它們是否有一些常見的整數和那些值。ArrayList比較和獲取共享值
任何想法? 謝謝!
如果您需要爲所有常見的整數,不包括空的集合:
List<List<Integer>> lists = ...
Collection<Integer> common = new HashSet<Integer>(lists.get(0));
for (int i = 1; i < lists.size(); i++) {
if (!lists.get(i).isEmpty())
common.retainAll(lists.get(i));
}
末的common
將包含整數是常見的所有的人。
你可能會想使用Apache的百科全書CollectionUtils.intersection()
得到兩個集合的交集......
迭代產生交集,如果當你完成它不是空的 - 你有一個共同的元素,它在這個結果集合中。
關於空列表:只需檢查它的size()
是否爲0,如果是 - 跳過此列表。
你可以這樣做。如果您有多個要搜索的元素,請將搜索放在一個循環中。
List aList = new ArrayList(); aList.add(new Integer(1));
如果(!ALIST = NULL & & aList.isEmpty()){ 如果(aList.contains(1)){ 的System.out.println( 「知道了」); } }
您可以對ArrayList對象使用set交集操作。
事情是這樣的:
List<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
l1.add(2);
l1.add(3);
List<Integer> l2= new ArrayList<Integer>();
l2.add(4);
l2.add(2);
l2.add(3);
List<Integer> l3 = new ArrayList<Integer>(l2);
l3.retainAll(l1);
現在,L3應該有L1和L2之間唯一的共同元素。
與2列表似乎很容易!現在如果有4個,我們不知道女巫是否有價值? – Vagelism 2012-04-08 14:36:38
如果其中一個列表是空的,這個工作是否可行?因爲如果它是空的,我仍然需要知道其他列表中是否有共同的值。 – Vagelism 2012-04-08 14:25:28
你需要什麼 - 所有列表中的普通整數,或者是一組整數,其中每一個對於其中至少兩個是共同的? – 2012-04-08 14:29:46
只是所有具有值的列表的常見整數。如果它們沒有值,則不需要在它們之間進行比較。例如,如果3個列表中有值,我想知道是否存在共同值其中3個是什麼,這個值是什麼。 – Vagelism 2012-04-08 14:33:19