如何从void方法(Java)更改LinkedList
这看起来很简单,但我不太明白为什么这不起作用 我想反转LinkedList中我有一个工作方法的元素,但是我不能返回值,因为我的教授希望它是一个void方法。我该怎么办如何从void方法(Java)更改LinkedList,java,linked-list,void,Java,Linked List,Void,这看起来很简单,但我不太明白为什么这不起作用 我想反转LinkedList中我有一个工作方法的元素,但是我不能返回值,因为我的教授希望它是一个void方法。我该怎么办 import java.util.LinkedList; public class ListUtil { public static void reverse(LinkedList<String> strings) { LinkedList<String> reverseLinked
import java.util.LinkedList;
public class ListUtil {
public static void reverse(LinkedList<String> strings) {
LinkedList<String> reverseLinkedList = new LinkedList<>();
for(int i = strings.size() - 1; i >= 0; i--) {
reverseLinkedList.add(strings.get(i));
}
strings = reverseLinkedList;
System.out.println(strings);
}
}
import java.util.LinkedList;
公共类ListUtil{
公共静态无效反向(LinkedList字符串){
LinkedList reverseLinkedList=新建LinkedList();
对于(int i=strings.size()-1;i>=0;i--){
reverseLinkedList.add(strings.get(i));
}
strings=reverseLinkedList;
System.out.println(字符串);
}
}
import java.util.LinkedList;
公共类反向测试仪{
公共静态void main(字符串[]args){
LinkedList employeeNames=新LinkedList();
雇员姓名:addLast(“迪克”);
雇员姓名、地址(“哈里”);
雇员姓名:addLast(“罗密欧”);
雇员姓名、地址(“Tom”);
ListUtil.反向(雇员姓名);
系统输出打印LN(员工姓名);
System.out.println(“预期:[汤姆、罗密欧、哈利、迪克]”;
}
}
在我的ListUtil类中,它确实反转了列表,但没有返回值(因为它是空的),但我不知道如何在ReverseTester类中设置employeeName
我知道这可能非常简单,但我一辈子都没能弄明白这一点,非常感谢您的帮助。清空并重新填充现有列表,而不是替换它
public static void reverse(LinkedList<String> strings) {
List<String> temp = new ArrayList<>(strings); // Copy the contents of the original list. Pass the original list to constructor of our duplicate list.
strings.clear(); // Empty the original list.
for (String e : temp)
strings.addFirst(e); // Refill the original list using elements from our duplicate list.
}
publicstaticvoidreverse(LinkedList字符串){
List temp=new ArrayList(strings);//复制原始列表的内容。将原始列表传递给复制列表的构造函数。
strings.clear();//清空原始列表。
用于(字符串e:temp)
strings.addFirst(e);//使用重复列表中的元素重新填充原始列表。
}
或者干脆
public static void reverse(LinkedList<String> strings) {
Collections.reverse(strings);
}
publicstaticvoidreverse(LinkedList字符串){
集合。反向(字符串);
}
非原语Java对象通过引用存储,因此不需要从ListUtil::reverse返回任何内容。对函数中的对象所做的任何更改都将反映在ReverseTester.java中。这是因为非原语Java对象也是通过引用存储的。基本上,你的代码就是你想要它做的。创建一个LinkedList,用项目填充它,然后反转这些项目
您将遇到System.out.println(employeeNames)问题代码>不过。因为这只会打印对象的正式名称,而不是内容。如果要用Java打印列表的内容,可以执行以下操作:
for (String name : employeeNames) {
System.out.println(t);
}
这是我的第一个答案,如果我不够清楚,请提问 Dave Newton我希望我可以,这会更容易,或者即使我可以让这个方法返回一个链接列表,但我的教授不希望Sadly将你当前的链接列表复制/克隆到新的链接列表,然后在原来的链接列表中进行反向旅行,这样做,您不需要像原版那样返回reversed@HưngChu您是说将LinkedList复制到另一个类中吗?谢谢,这很好,但是这如何改变我的tester类中的列表,而我的原始代码没有改变?System.out.println(employeeNames)
是我的教授想要的,并希望它以相反的方式打印列表。这很有帮助,但我不知道非原始对象以及它们是如何工作的。我在上面的答案中使用了for循环,这确实反映到了我的测试课上。答案非常清楚!我对Java还比较陌生,只是不理解为什么思考会起作用的一些原因。你把一切都搞定了!
for (String name : employeeNames) {
System.out.println(t);
}