簡體   English   中英

被LinkedList混淆

[英]Confused by LinkedList

伙計們,當我為LinkedList做一個有關顯示生日詳細信息的示例時,我感到非常困惑,

我的代碼如下:

import java.util.Iterator;
import java.util.LinkedList;


public class LinkedListTest {
public static void main(String[] args)
{
Birth[] birth = new Birth[10];
LinkedList list = new LinkedList();
for(int i = 0; i < 10; i++)
{
    birth[i] = Birth.BirthEntry();
    list.add(birth[i]);
}
Print(list);
list = LinkedSort(list);
Print(list);
}
public static LinkedList LinkedSort(LinkedList list)
{
for(int k = 1; k < list.size(); k++)
    for(int i = 0; i < list.size() - k; i++)
    {
        if(((Birth)list.get(i)).compareTo(((Birth)list.get(i + 1)))>0);
        {
            Birth birth = (Birth)list.get(i);
            list.set( i,  (Birth)list.get( i + 1));
            list.set(i + 1, birth);
    }
}
return list;
}
public static void Print(LinkedList list)
{
Iterator it = list.iterator();
System.out.println("-----------------------");
while(it.hasNext())
{
    System.out.println(it.next().toString());
}
System.out.println("---------------------------");
}
}

我有兩個問題需要澄清,感謝您的提前幫助。

  1. 在這里聲明k有什么用? 該問題對應於for(int k = 1; k < list.size(); k++)

  2. 我不知道為什么我需要宣布這一點,我在這里完全感到困惑:

     list.set( i, (Birth)list.get( i + 1)); list.set(i + 1, birth); 
  3. 除了“輸入生日,年份:月份:日期:”外,我沒有任何運行結果。 是因為我沒有輸入任何數據嗎?

您的代碼中存在相當大的錯誤,這是

if(((Birth)list.get(i)).compareTo(((Birth)list.get(i + 1)))>0);
{
  Birth birth = (Birth)list.get(i);
  list.set( i,  (Birth)list.get( i + 1));
  list.set(i + 1, birth);
}

不起作用,因為您的if主體是單個分號。 然后,您將獲得一個匿名阻止。 更改為

if(((Birth)list.get(i)).compareTo(((Birth)list.get(k)))>0) // <-- no semicolon
{
  Birth birth = (Birth)list.get(i);
  list.set( i,  (Birth)list.get(k));
  list.set(k, birth);
}

接下來, k1開始,這樣i就可以從0開始(這是一種嵌套循環)。 接下來, List的大小是控制k范圍的因素。 接下來,在你的指令if身體都掉在元素i在和元素k 如果在元素i是大於在元素k

最后,這個

for(int i = 0; i < list.size() - k; i++) {

應該是

for(int i = 0; i < list.size(); i++) {
  if (i == k) continue;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM