Как установить начальную емкость вложенных списков? - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь установить начальную емкость вложенного ArrayList на какое-то значение (скажем, 10), но когда я пытался получить доступ к внутреннему списку, чтобы добавить какой-то элемент, он дает мне ArrayOutOfBoundException.Пожалуйста, предложите хорошее решение !!!

Ниже приведен фрагмент кода

public static void main(String[] args) 
{
    ArrayList<ArrayList<Integer>> bucket = new ArrayList<ArrayList<Integer>>();

    System.out.println(bucket.get(5).add(5));       

    System.out.println(bucket);
}

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Код:

 public class Example {

    public static void main(String[] args) {
        ArrayList<ArrayList<Integer>> bucket = new ArrayList<ArrayList<Integer>>();      

        //initial capacity of the nested arraylist to 5.  
        System.out.println(bucket.add(new ArrayList<>(5)));
        ArrayList<Integer> element = new ArrayList<>();
        element.add(5);
        bucket.add(0, element);
        System.out.println(bucket);
    }

}

Выход:

true
[[5], []]
0 голосов
/ 28 марта 2019

Начиная с Java 8, вы можете создать список пустых списков, используя Stream.generate.

import java.util.*;
import java.util.stream.*;

public class ListOfLists {
    public static void main(String[] args) {
        List<List<Integer>> bucket = listOfList(10);
        bucket.get(5).add(5);
        System.out.println(bucket);
    }

    public static <T> List<List<T>> listOfList(int size) {
        return Stream.generate(ArrayList<T>::new).limit(size).collect(Collectors.toList());
    }
}

Выход

[[], [], [], [], [], [5], [], [], [], []]
0 голосов
/ 28 марта 2019
System.out.println(bucket.get(5).add(5));  

Вам необходимо понять эту строку кода, вы пытаетесь получить доступ к 5-му элементу из «корзины» списка массивов, но добавили ли вы какие-либо элементы в корзину ArrayList (в данном случае этот элементдругой список массивов)

Если вы не добавите свои элементы, вы не сможете получить к ним доступ, поскольку они не существуют, поэтому вы видите ArrayOutOfBoundException, когда пытаетесь получить доступ к 5-му элементу в bucket.get(5)

Вы можете захотеть пройти через Javadoc ArrayList https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...