2017-02-19 3 views
2

как название говорит, что я хочу сделать два двухмерного массива, как показано ниже:я могу сделать двумерный массив, его элемент списка

List<List<Integer>>[][] dp = new LinkedList<List<Integer>>[3][3]; 

то компилятор Dont позвольте мне сделать это. Легко думать об использовании класса для его инкапсуляции. Например:

class Node{ 
    List<List<Integer>> list = ...; 
} 
Node[][] nodes = new Node[3][3]; 

, но я хочу знать, существует ли более простой способ достичь этого.

+1

Можете ли вы рассказать нам, какова ваша фактическая потребность в этой структуре данных? –

+1

Вопрос может быть упрощен к списку [] dp = new LinkedList [3]; –

+0

@ Трим просто для любопытства –

ответ

1

Вы должны будете жить с этим уродливым броском, если вы хотите простоты:

List<List<Integer>>[][] dp = (LinkedList<List<Integer>>[][]) new Object[3][3]; 

В Java, мы не можем создать общие массивы. Это долгая дискуссия, и я рекомендую вам прочитать об этом.

Короче говоря, Java ничего не знает о дженериков - это просто проверяет безопасность типов во время компиляции, а затем «переводит» дженериков в обычный Object

0

Я предпочитаю, чтобы создать класс, который расширяет List, как это:

private static class ListOfList extends LinkedList<List<Integer>> {} 

чем,

ListOfList[][] dp = new ListOfList[3][3]; 

Обратите внимание, что я использовал вложенный класс, поэтому он войдет в ваш основной класс.

Смежные вопросы