2014-02-07 83 views
0

這是我第一次使用鏈接列表,並且從兩個單獨的文件創建了兩個列表並標記了數據。比較兩個鏈接列表中的內容

現在我需要比較數據並尋找相似之處,我的意思是相同的數據。 這樣有1:1,3,狗和列表2:1,狗,貓。兩者都有1只和狗。

我不確定如何解決這個問題,並會喜歡一些提示,輸入或提示。

+3

這完全取決於你認爲什麼是「相似性」。 – dasblinkenlight

回答

1

只有在元素具有可比性的情況下(即實現Comparable接口),才比較兩個Lists的代碼。

這是參數化,這樣可以提供任何類型的實現Comparable<T extends Comparable<T>>)名單元素的

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

public class ComparatorTest { 
    public static void main(String[] args) { 
     List<Integer> list1 = new ArrayList<>(Arrays.asList(new Integer[]{1, 2, 3, 6, 7})); 
     List<Integer> list2 = new ArrayList<>(Arrays.asList(new Integer[]{1, 2, 3, 6})); 

     final int result = new ComparatorTest().compareTo(list1, list2); 
     System.out.println("result = " + result); 

    } 

    <T extends Comparable<T>> int compareTo(List<T> list1, List<T> list2) { 
     int minLength = Math.min(list1.size(), list2.size()); 

     for (int i = 0; i < minLength; i++) { 
      final int compareValue = list1.get(i).compareTo(list2.get(i)); 
      if (compareValue != 0) { 
       return compareValue; // They are already not equal 
      } 
     } 
     if (list1.size() == list2.size()) { 
      return 0; // They are equal 
     } else if (list1.size() < list2.size()) { 
      return -1; // list 1 is smaller 
     } else { 
      return 1; 
     } 

    } 
}