2015-06-01 72 views
0

我想檢查列表「wordlist」是否有一些元素從列表「列表」。如果有,應打印這些元素。在java中比較2個列表的語法只是有一些困難。這裏是我的代碼:檢查是否有任何元素從另一個ArrayList中打印相同的元素

File files = new File("E:/test/dictionary.txt"); 
String[] words = file.split(" "); 
List<String> wordlist = Arrays.asList(words); 
try { 
    Scanner scanner = new Scanner(files); 
    List<String> list = new ArrayList<>(); 

    while (scanner.hasNextLine()) { 
     list.add(scanner.nextLine()); 
    } 

    scanner.close(); 
    for (String word : wordlist) { 
     System.out.println(word); 
    } 
    for (String oleg : list) { 
     System.out.println(oleg); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
+0

可能的重複[兩個清單在Java中的有效交集?](http://stackoverflow.com/questions/2400838/efficient-intersection-of-two-liststring-in-java) – Gil

回答

1

也許我誤解了你的問題,因爲解決方案對我來說很簡單。您只需運行for-loop並使用ArrayListcontains(Object O)方法或運行嵌套的for-loop並使用Stringequals(String O)方法。見下文。

方法1:

for(int a = 0; a < wordlist.size(); a++) 
    if(wordlist.contains(list.get(a))) 
     System.out.println(list.get(a)); 

方法2:

for(int a = 0; a < wordlist.size(); a++) 
    for(int b = 0; b < wordlist.size(); b++) 
     if(wordlist.get(a).equals(list.get(b)); 
      System.out.println(list.get(b)); 

在第二個例子我保持wordlist.size()如在兩個環路的因素,因爲二者listwordlist應該是相同的大小,或者至少我假設。

另外,對於帶有多於一個單詞的引用或變量,Java約定規定好的做法是將所有後續單詞的首字母大寫,即wordlist應該是wordList

希望這會有所幫助。

+0

方法2正在工作很好。謝謝 –

+0

@OlegNekhayenko沒問題。我很高興能幫助你。 – Ungeheuer

0

如果我明白你的問題,使用Collection.retainAll(Collection)(每個鏈接的Javadoc保留只有那些包含在指定collection在這個集合中的元素),如

wordlist.retainAll(list); 
System.out.println(wordlist); 
// for (String word : wordlist) {        
//  System.out.println(word);         
// } 
// for (String oleg : list) { 
//  System.out.println(oleg); 
// } 
相關問題