gpt4 book ai didi

java - 根据用户输入以不同方式对 java 中的链表进行排序时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:03 26 4
gpt4 key购买 nike

我在这里遇到了一个问题,我已追踪到此方法。当然,如果有必要,我可以提供更多代码。我有一个文本文件,文件中的每一行都有一辆不同的自行车。每行的格式为 color::year::price。例如,一辆自行车可能是 red::2008::150

我计划将此信息存储在链接列表中,并希望能够按颜色、年份或价格对它们进行排序。我不需要稍后再次排序。我只需要从文本文件中按照正确的顺序插入它们。用户输入 1、2 或 3,然后我创建一个新的链表,例如 LinkedList foo = new LinkedList(1);,其中 1 表示应添加节点,使其按颜色按字母顺序排列。 23 按彼此的顺序对变量进行排序。以下是我的一般实现方式:

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));
}

最佳答案

仔细检查循环中的条件。请记住,x.compareTo(y) ?= 0x ?= y 完全相同,因此 oString.compareTo(currentString) > 0 实际上意味着 oString > currentString

假设您有项目 10 -> 20 -> 30 -> null。您要插入 25。您的 compareTo 行首先会显示“if (25 > 10)在此节点后创建节点n”。您的列表将为“10 -> 25 -> 20 -> 30 -> null”。相反,您要做的是仅当 newItem > nextnext == null 时才在 current 之后插入项目。

希望这是一个手动创建链接列表的学校练习;将列表存储在 ArrayList 中并使用 Collections.sort(list, comparator) 根据用户输入对列表进行排序更有意义。

关于java - 根据用户输入以不同方式对 java 中的链表进行排序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com