java - 对 LinkedList 感到困惑

标签 java linked-list

伙计们,当我为 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 主体是一个分号。然后你就有了一个匿名 block 。将其更改为,

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 处的元素 if i 处的元素大于 k 处的元素。

最后这个

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

应该是

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

关于java - 对 LinkedList 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950075/

相关文章:

java - 如何使用 ORM Lite 保留 Java8 LocalDate/LocalDateTime?

java - 拥有类似 Freemarker 的 PDF 生成模板(使用 itext)

c - 无法在C中按升序对链表进行排序

java - 如何在java中递归地在链表前面添加一个节点

C - 访问链表内部的链表

java - 如果查询执行成功或失败,resultSet2 的值是多少

java - Web 服务无法在 GlassFish 上运行

java - 如何使用cmd添加gson创建jar

java - 为什么从 LinkedList 的末尾获取值比从开始要慢得多?

c - 如何创建一个包含动态设置数据类型的 C LinkedList