【问题标题】:how to convert an Array to a linked list in Java如何在Java中将数组转换为链表
【发布时间】:2018-09-06 03:33:51
【问题描述】:

我是一个相当新的 Java 程序员,我目前正在学习如何将列表转换为数组。我遇到的问题是,当我尝试链接列表时,我得到的输出与数组中的输出不同。链表输出都是空值,而数组应该有随机值。 这是我的代码:

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class InsertingElements {
    public static void main(String[] args) {
        Integer[] numbers = new Integer[25];
        List<Integer> linkList = new LinkedList<>(Arrays.asList(numbers));

        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = (int) (Math.random() * 100 + 1);
        }

        System.out.println("Numbers Generated: " + Arrays.toString(numbers));

        numbers = linkList.toArray(new Integer[linkList.size()]);

        System.out.println("Numbers: ");
        for (Integer number : numbers) {
            System.out.println(number);
        }
    }
}

这是输出:

Numbers Generated: [92, 61, 25, 8, 48, 80, 85, 89, 53, 18, 48, 38, 48, 
41, 93, 94, 24, 73, 83, 21, 18, 52, 3, 14, 10]
Numbers: 
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null

【问题讨论】:

    标签: java arrays linked-list


    【解决方案1】:

    List&lt;Integer&gt; linkList = new LinkedList&lt;&gt; (Arrays.asList(numbers)); 移动到您填充数组的位置之后,否则您的链接列表只是默认值列表。

    【讨论】:

    • 啊,就是这样。我第一次错过了。
    【解决方案2】:

    试试这个

    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    
        public class InsertingElements {
            public static void main(String[] args) {
                Integer[] numbers = new Integer[25];
    
                for (int i = 0; i < numbers.length; i++) {
                numbers[i] = (int) (Math.random() * 100 + 1);
               }
    
               List<Integer> linkList = new LinkedList<>(Arrays.asList(numbers));
               System.out.println("Numbers Generated: " + Arrays.toString(numbers));
    
              numbers = linkList.toArray(new Integer[linkList.size()]);
    
              System.out.println("Numbers: ");
              for (Integer number : numbers) {
              System.out.println(number);
            }
          }
        }
    

    【讨论】:

      【解决方案3】:
      import java.util.Arrays;
      import java.util.LinkedList;
      import java.util.List;
      
          public class InsertingElements {
              public static void main(String[] args) {
                  Integer[] numbers = new Integer[25];
      
                  for (int i = 0; i < numbers.length; i++) {
                  numbers[i] = (int) (Math.random() * 100 + 1);
                 }
      
                 List<Integer> linkList = new LinkedList<>(Arrays.asList(numbers));
                 System.out.println("Numbers Generated: " + Arrays.toString(numbers));
      
                numbers = linkList.toArray(new Integer[linkList.size()]);
      
                System.out.println("Numbers: ");
                for (Integer number : numbers) {
                System.out.println(number);
              }
            }
          }
      
      

      【讨论】:

      • 仅供参考。当我们使用接受数组的构造函数创建列表时,列表会在内部迭代数组并将元素添加到列表中。一旦构造函数块被执行,列表对象就不再持有数组的引用。这就是@michael 的代码不起作用的原因。
      猜你喜欢
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2022-06-30
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      相关资源
      最近更新 更多