2014-03-04 213 views
0

我有一個隊列實現,如下所示。比較鏈接列表中的元素

static String a = "1 0 2014/03/03 01:34:39 0.0 0.0 0.0"; 
static String b = "2 1 2014/03/03 01:34:40 0.0 0.0 0.0"; 
static String c = "3 2 2014/03/03 01:34:41 0.0 0.0 0.0"; 
static String[] d; 
String e; 
public static void main(String[] args) { 

    Queue<String> s = new LinkedList<String>(); 
    s.add(a); 
    s.add(b); 
    s.add(c); 
    } 

正如你看到列表中的每個條目是具有7種元素的字符串。我想比較每個字符串中的這些條目。例如,a,b,c使用s的第一個條目。

+0

問題是?\ – kosa

+3

*我想比較每個字符串*的這些條目,請解釋您想如何比較它們。 –

+0

我不太明白AlllsWell的問題。你想讓我們爲你寫一個比較方法嗎? *你做了什麼 – Fallenreaper

回答

3

這裏是對我的評論的解釋,「嘗試爲您的字符串創建一個自定義類並實現Comparable接口,然後您可以編寫自己的compareTo方法。」

由於您擁有非常特定的數據類型,因此您可以創建自己定義的類。以下MyString類封裝了字符串,實現了接口,並提供瞭如何使用compareTo方法處理此類的示例。

public class MyString implements Comparable<MyString> { 
    private String data; 

    public MyString(String data) { 
     this.data = data; 
    } 

    public int compareTo(MyString other) { 
     String[] thisArray = new String[6]; 
     String[] otherArray = new String[6]; 
     thisArray = this.data.split(" "); 
     otherArray = other.data.split(" "); 

     // Compare each pair of values in an order of your choice 
     // Here I am only comparing the first two number values 
     if (!thisArray[0].equals(otherArray[0])) { 
      return thisArray[0].compareTo(otherArray[0]); 
     } else if (!thisArray[1].equals(otherArray[1])){ 
      return thisArray[1].compareTo(otherArray[1]); 
     } else { 
      return 0; 
     } 
    } 
} 

compareTo方法返回1,0,或-1取決於值A是否是分別大於,等於,或大於值B同樣較小,這僅僅是一個例子,我只比較字符串。這裏是一個如何比較兩個使用這種方法,您格式化字符串的例子:在ComparablecompareTo

MyString a = new MyString("1 0 2014/03/03 01:34:39 0.0 0.0 0.0"); 
MyString b = new MyString("1 1 2014/03/03 01:34:40 0.0 0.0 0.0"); 
// Do something with the compared value, in this case -1 
System.out.println(a.compareTo(b)); 

文檔可以發現here