【问题标题】:Having trouble understanding how to create an array of linkedlists无法理解如何创建链表数组
【发布时间】:2013-02-04 02:49:36
【问题描述】:

好的,所以我一直在阅读有关创建链表数组和大多数堆栈溢出线程的每个谷歌结果,但我并不真正了解它们在做什么。我是否需要创建一个扩展链接列表的单独类,然后创建该类的数组?

我已经尝试过一百万种不同的方式来安排这段代码,但这就是我目前所拥有的。

public static int[][] genPerms(int numElements, int totPerms) {
    int permArray[][] = new int[totPerms][numElements];
    LinkedList<Integer>[] elementsLeftList = new LinkedList<Integer>[numElements];

错误是泛型数组创建。有人可以向我解释一下这里到底发生了什么。

除了下面的解决方案,有人告诉我你可以创建一个头指针数组。

提前致谢。

【问题讨论】:

    标签: java arrays class generics linked-list


    【解决方案1】:

    不允许创建泛型数组,请执行以下操作

        @SuppressWarnings("unchecked")
        LinkedList<Integer>[] elementsLeftList = new LinkedList[numElements];
    

    没问题

    【讨论】:

    • 或避免原始类型:LinkedList&lt;Integer&gt;[] elementsLeftList = new LinkedList&lt;?&gt;[numElements];
    【解决方案2】:

    您目前无法在 Java 中创建一个泛型数组,而无需经历一个复杂的过程。您可以改为执行以下操作吗?

    List<LinkedList<Integer>> elementsLeftList = new ArrayList<LinkedList<Integer>>();
    

    如果你真的需要它作为一个数组,你可以从 elementsLeftList.toArray() 获取它并转换结果。

    解释可以阅读以下链接:http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#FAQ104

    【讨论】:

    • 这似乎有效。当我访问底层链表的元素时,我像这样访问它们 permArray[counter][elemsPlaced] = (int) elementsLeftList.get(counter).remove(eleWorkingWith); ??谢谢。我选择你的答案是正确的。
    猜你喜欢
    • 2015-02-14
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-08-08
    • 2021-07-30
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多