我在這裏遇到了一個問題,我跟蹤到了這個方法。當然,如果有必要,我可以提供更多的代碼。我有一個文本文件,文件中的每一行都有一個不同的自行車。每行的格式爲color::year::price
。例如,一輛自行車可能是red::2008::150
。難以按照不同的方式對java中的鏈表進行排序,具體取決於用戶輸入
我打算將此信息存儲在鏈接列表中,並且希望能夠按顏色,年份或價格對它們進行排序。我不需要以後再分類。我只需要從文本文件中按照正確的順序插入它們。用戶輸入1,2或3,然後創建一個新的鏈接列表,如LinkedList foo = new LinkedList(1);
,其中1
表示應添加節點,以便按顏色按字母順序排列。 2
和3
按其他順序排列變量。這是我的一般實施是如何工作的:
LinkedList color = new LinkedList(1); //Should sort by color
LinkedList year = new LinkedList(2); //"" year
LinkedList price = new LinkedList(3); //"" price
color.add(new Bike("a::1::1"));
year.add(new Bike("a::1::1"));
price.add(new Bike("a::1::1"));
color.add(new Bike("b::2::2"));
year.add(new Bike("b::2::2"));
price.add(new Bike("b::2::2"));
color.add(new Bike("c::3::3"));
year.add(new Bike("c::3::3"));
price.add(new Bike("c::3::3"));
以上所有鏈接列表三種應該存儲在其中的數據相同,並應按照不同的順序顯示,但是所有三個顯示的相同順序和最後一個元素獲得複製。他們都傾向於看起來像這樣:
a::1::1
b::2::2
c::3::3
c::3::3
這顯然是錯誤的。最後一行不應該重複,每個鏈表應該以不同的順序產生這些值。以下是我的add()
代碼,問題似乎在這裏。對於記錄,LinkedList對象只包含一個節點,其值爲data
和next
值爲null
。
public void add(Object o){
Node current = list;
String currentString = "";
String oString = o.toString().split("::")[sortOrder - 1];
while(current.getNext() != null){
current = current.getNext();
currentString = current.getData().toString().split("::")[sortOrder - 1];
//I do the 'sortOrder - 1' bit because when the user enters 1
//we should sort by the 0th element, 2 means sort by the 1st element, etc
if(oString.compareTo(currentString) > 0){
Node n = new Node(o);
n.setNext(current.getNext());
current.setNext(n);
return;
}
}
current.setNext(new Node(o));
}
是否有必要重新創建類似filds的新Bike()的對象?例如'新的自行車(「a :: 1 :: 1」)爲三個LinkedList? –