2014-04-29 43 views
-2

我有兩個字符串列表,其中包含大約100個字符串項目,每個列表中有一些是常見的。如何從java中的兩個arraylist中獲取常用項目?

我想獲得這兩個列表共同的項目,並將其存儲在另一個列表中。

這是怎麼做到的。請幫忙。

+0

可以重複嗎?也就是說,可以有'a,b,b,c'和'x,b,b,a',並且你想要'b's? – fge

+1

對本網站有重複問題的答案寫作答案,並表明不付出任何努力只會促使人們繼續努力並仍然獲得答案。 – csmckelvey

回答

1

您可以使用列表

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class MainClass { 
    public static void main(String args[]) { 
    String orig[] = { "a", "b", "b", "c" }; 
    String act[] = { "x", "b", "b", "y" }; 
    List origList = new ArrayList(Arrays.asList(orig)); 
    List actList = Arrays.asList(act); 
    origList.retainAll(actList); 
    System.out.println(origList); 
    } 
} 

的方法的retainAll這將打印[B,B]

1

你想要什麼叫做交集。 (或multiset,如果你想看到幾個副本)。

簡單但有效的解決方案是對兩個數組進行排序並遍歷它們。

for(int i = 0; i < a.length();) 
{ 
    for(int j = 0; j < b.length();) 
    { 
     int comparison = a[i].compareTo(b[j]); 
     if(comparison == 0) 
     { 
      // Add a[i] or b[j] to result here. 
      // If you don't want duplicate items 
      // in result, compare a[i] to 
      // last item in result and add 
      // only if a[i] is strictly greater. 

      ++i; 
      ++j; 
     } 
     else if(comparison < 0) 
      ++i; 
     else 
      ++j 
    } 
} 

如果字符串是足夠長的時間,你應該從第一列表添加到HashSet串和遍歷第二個數組檢查,如果元素是集合。

相關問題