gpt4 book ai didi

Java链表集合方法

转载 作者:行者123 更新时间:2023-11-30 09:19:03 24 4
gpt4 key购买 nike

我必须在不使用 import.java.util.LinkedList 的情况下将我的 ArrayList 代码转换为链表。

我之前的代码有4个ArrayList(name, price, quantity, priority)

我必须根据 ArrayList 的优先级对 arraylist 进行排序。

所以我就这样做了。

public void sortPriority() {
for (int i=0; i<name.length(); i++) {
for (int j=0; j<priority.size()-i-1; j++) {
if (priority.get(j).compareTo(priority.get(j+1)) > 0) {
int temp1 = priority.get(j);
priority.set(j,priority.get(j+1));
priority.set(j+1, temp1);
String temp2 = name.get(j);
name.set(j,name.get(j+1));
name.set(j+1, temp2);
double temp3 = price.get(j);
price.set(j,price.get(j+1));
price.set(j+1, temp3);
int temp4 = quantity.get(j);
quantity.set(j,quantity.get(j+1));
quantity.set(j+1, temp4);
}
}
}
}

我把我的名字 ArrayList 改成了 Linked List。

由于我无法导入 java.util.LinkedList,所以我将自己的代码放在另一个名为 StringLinkedList 的类中。

abstract class StringLinkedList implements LinkList {

private ListNode head;

public StringLinkedList() {
head = null;
}
public void showList() {
ListNode position = head;
while (position != null) {
System.out.println(position.getData());
position = position.getLink();
}
}
public int length() {
int count = 0;
ListNode position = head;
while (position != null) {
count++;
position = position.getLink();
}
return count;
}

public void addNodeToStart(String addData) {
head = new ListNode(addData, head);
}
public void deleteHeadNode() {
if (head != null) {
head = head.getLink();
} else {
System.out.println("Deleting from an empty list.");
System.exit(0);
}
}

public boolean onList(String target) {
return find(target) != null;
}
private ListNode find(String target) {
boolean found = false;
ListNode position = head;
while ((position != null) && !found) {
String dataAtPosition = position.getData();
if (dataAtPosition.equals(target)) {
found = true;
} else {
position = position.getLink();
}
}
return position;
}

public String get(int i) {
assert (i>=0);
ListNode current = this.head;
while (i > 0) {
i--;
current = current.link;
if (current == null) {
return null;
}
}
return current.data;
}

public String set (int index, String element) {
ListNode current = this.head;
ListNode e = current;
String oldVal = e.element;
e.element = element;
return oldVal;
}
}

除了我的 set() 之外,其他所有方法都可以正常工作。

我应该改变什么?

最佳答案

您的 set() 方法会忽略传入的 index 参数。如所写,它只是修改列表头部的项目。

您必须以类似于 get() 的方式实现 set() - 找到具有指定索引的项目,然后设置该项目的元素。

关于Java链表集合方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133052/

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