Java 就内存而言,打印链表的有效方法

Java 就内存而言,打印链表的有效方法,java,linked-list,Java,Linked List,我们可以使用迭代器和for循环打印链表。就内存分配而言,它有什么不同?哪一个更有效 public class Demo { public static void main(String[] args) { LinkedList<String> placesToVisit = new LinkedList<String>(); placesToVisit.add("Sydney"); placesToVisit.add

我们可以使用迭代器和for循环打印链表。就内存分配而言,它有什么不同?哪一个更有效

public class Demo {
    public static void main(String[] args) {
        LinkedList<String> placesToVisit = new LinkedList<String>();
        placesToVisit.add("Sydney");
        placesToVisit.add("Melbourne");
        placesToVisit.add("Brisbane");
        placesToVisit.add("Perth");

        printListWithoutFor(placesToVisit);
        printListWithFor(placesToVisit);

    }

    private static void printListWithoutFor(LinkedList<String> linkedList) {
        Iterator<String> i = linkedList.iterator();
        while (i.hasNext()) {
            System.out.println("Now visiting " + i.next());
        }
        System.out.println("=========================");
    }

    private static void printListWithFor(LinkedList<String> linkedList){
        for (int i=0; i<linkedList.size(); i++){
            System.out.println("Now visiting " + linkedList.get(i));
        }
    }
}
公共类演示{
公共静态void main(字符串[]args){
LinkedList placestovist=新建LinkedList();
placesToVisit.add(“悉尼”);
placesToVisit.add(“墨尔本”);
placesToVisit.add(“布里斯班”);
placesToVisit.add(“珀斯”);
不带出口的打印列表(访问地点);
打印列表(地点访问);
}
私有静态无效打印列表WithOutFor(LinkedList LinkedList){
迭代器i=linkedList.Iterator();
while(i.hasNext()){
System.out.println(“正在访问”+i.next());
}
System.out.println(“==============================================”);
}
私有静态无效打印列表Withfor(LinkedList LinkedList){

for(int i=0;i使用
迭代器
打印更省时(因为它只在链接列表上迭代一次,其中每个
linkedList.get(i)
都需要在列表上进行部分迭代),即使它需要多一点内存(用于
迭代器
的分配).我不会仅仅为了保存一个实例分配而在
迭代器上选择for循环

就空间复杂性而言,这两种方法都需要
O(1)
space


因此,您应该更喜欢时间复杂度更好的方法-使用
迭代器的打印需要
O(n)
时间,而for循环需要
O(n^2)
时间。

不仅仅是为了内存问题,而且为了避免索引问题,您可以找到迭代器优于循环。请查找更多信息

迭代器优于循环。您可能会发现更多信息更完美。谢谢。迭代器优于循环。您可以找到更多信息,而不是直接针对您的问题,而是针对ite考虑到评级问题,ArrayList应该比LinkedList更受青睐。