2016-01-16 1 views
-1

Так что у меня эти данныеJava; сохранение массива массивов в коллекции

{ { 1, 3, 5, 3, 1 }, 
    { 3, 5, 6, 5, 1 }, 
    { 7, 2, 3, 5, 0 }, 
    { 12, 1, 5, 3, 0 }, 
    { 20, 6, 3, 6, 1 }, 
    { 20, 7, 4, 7, 1 } } 

и я хочу, чтобы сохранить его в какой-то коллекции, списка или набора. Так что, если коллекция была названа List, если я тип List[0][3] было бы Reffer в целом 4. Я попытался с

ArrayList<int[]> myNumberList = new ArrayList<int[]>(); 

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

+0

то, что есть вы попытались поместить данные в список. Пожалуйста, поделитесь больше кода, чем просто конструктор ... – thst

+0

Дублированный вопрос? –

+0

Возможный дубликат [Преобразование массива в список на Java] (http://stackoverflow.com/questions/2607289/converting-array-to-list-in-java) –

ответ

0

Get() Вы могли бы сделать его Integer[][] и создать List<List<Integer>>. Нечто подобное,

Integer[][] arr = { { 1, 3, 5, 3, 1 }, { 3, 5, 6, 5, 1 }, 
     { 7, 2, 3, 5, 0 }, { 12, 1, 5, 3, 0 }, { 20, 6, 3, 6, 1 }, 
     { 20, 7, 4, 7, 1 } }; 
System.out.println(Arrays.deepToString(arr)); 
List<List<Integer>> al = new ArrayList<>(); 
for (Integer[] inArr : arr) { 
    al.add(Arrays.asList(inArr)); 
} 
System.out.println(al); 

, который выводит (отформатированные на этот пост)

[[1, 3, 5, 3, 1], [3, 5, 6, 5, 1], [7, 2, 3, 5, 0], 
        [12, 1, 5, 3, 0], [20, 6, 3, 6, 1], [20, 7, 4, 7, 1]] 
[[1, 3, 5, 3, 1], [3, 5, 6, 5, 1], [7, 2, 3, 5, 0], 
        [12, 1, 5, 3, 0], [20, 6, 3, 6, 1], [20, 7, 4, 7, 1]] 
1

Массива оператора [] доступа применим только к массивам. Таким образом, вы можете создавать только 2-мерный массив.

int a[][] = new int[][]{ 
     {1, 3, 5, 3, 1}, 
     {3, 5, 6, 5, 1}, 
     {7, 2, 3, 5, 0}, 
     {12, 1, 5, 3, 0}, 
     {20, 6, 3, 6, 1}, 
     {20, 7, 4, 7, 1} 
}; 
System.out.println(a[0][3]); 

Но вы не можете создать любой тип коллекции, которые можно использовать для доступа к [] его значения.

Yoy все еще может использовать Список массивов. Но у вас будет индексировать первое измерение, используя метод

List<int[]> a2 = Arrays.asList(
     new int[]{1, 3, 5, 3, 1}, 
     new int[]{3, 5, 6, 5, 1}, 
     new int[]{7, 2, 3, 5, 0}, 
     new int[]{12, 1, 5, 3, 0}, 
     new int[]{20, 6, 3, 6, 1}, 
     new int[]{20, 7, 4, 7, 1} 
); 

System.out.println(a2.get(0)[3]); 
+0

Хорошо, я пробовал это, но я забыл добавить другой индекс, спасибо в любом случае. Тем не менее, я по-прежнему заинтересован в том, чтобы эти данные были собраны. Мне не нужно обращаться к нему, как [i] [j]. – JelOvoSanIliJava

+0

В этом случае вам придется использовать вставную версию ints - 'Integer'. То есть как было предложено @ elliott-frisch –

0

Трудно ответить на то, что вам действительно нужно в вашем конкретном случае. Но в общем списке-эквивалент 2-мерного массива, который, я думаю, вы ищете, будет List<List<Integer>> типа, а в Java-8 вы можете преобразовать его таким образом:

int a[][] = new int[][]{ 
      {1, 3, 5, 3, 1}, 
      {3, 5, 6, 5, 1}, 
      {7, 2, 3, 5, 0}, 
      {12, 1, 5, 3, 0}, 
      {20, 6, 3, 6, 1}, 
      {20, 7, 4, 7, 1}}; 

    List<List<Integer>> l2 = new ArrayList<>(); 
    Stream.of(a).forEach(a1 -> l2.add(Arrays.stream(a1).boxed().collect(Collectors.toList())));