объяснение List <String>, как он используется в коде - PullRequest
1 голос
/ 05 октября 2019
public static void main(String a[]){
        String[] strArr = {"JAVA", "C++", "PERL", "STRUTS", "PLAY"};
        List<String> strList = Arrays.asList(strArr);
        System.out.println("Created List Size: "+strList.size());
        System.out.println(strList);

Я искал объяснение кода

String[] strArr = {"JAVA", "C++", "PERL", "STRUTS", "PLAY"};

эта строка означает, что мы объявляем переменную strArr типа строки, а в массиве, который мы объявляем 5 переменных, это то, чтоправильно

Тогда я не могу четко понять, вторая строка

List<String> strList = Arrays.asList(strArr);

является strList объектом List<String>?

Ответы [ 3 ]

3 голосов
/ 05 октября 2019

С помощью приведенного ниже кода вы преобразуете массив String в список фиксированного размера.

List<String> strList = Arrays.asList(strArr);

При преобразовании массива в список. Вы можете выполнить все операции List для вновь созданного списка фиксированного размера. Пример сортировки списка, как показано ниже.

Collection.sort(strList);

Но с помощью приведенного выше кода вы не можете добавить элемент в свой список. При добавлении элемента в список вы получите исключение. Пример кода приведен ниже.

String[] strArr = {"JAVA", "C++", "PERL", "STRUTS", "PLAY"};
List<String> strList = Arrays.asList(strArr);
strList.add("Spring"); // This line will throw exception
System.out.println("Created List Size: "+strList.size());
System.out.println(strList);

Если вы хотите добавить элемент в свой список, вам необходимо преобразовать массив строк в список, как показано ниже.

List<String> strList = new ArrayList<String>(Arrays.asList(strArr));

Надеюсь, что это поможет вам понять это

1 голос
/ 05 октября 2019

Arrays.asList(T... arr) - это статический метод, своего рода утилита, которая принимает массив в качестве входных данных и возвращает List<T>, поддерживаемый входным массивом. Итак, да strList - это List.

Чтобы ответить на ваш вопрос в комментариях по поводу «backed by»:

Из Javadoc: «Возвращает список фиксированного размера, поддерживаемыйуказанный массив. (Изменения в возвращенном списке "write through" в массив.) ".

Итак, список поддерживается массивом в том смысле, что все изменения, внесенные в содержимое списка, будут отражены в массиве. Пример:

    String[] a = new String[] {"1", "2", "3"};

    List<String> l = Arrays.asList(a);
    l.set(0, "0");

    assert a[0] == "0";
0 голосов
/ 05 октября 2019

Arrays.asList() - статическая утилита для Java. Он создает List, копируя значения из вашего array of strings (или любого вида примитива / объекта).

Вы можете проверить документацию на docs.oracle . Преимущество List в том, что размер является переменным, поэтому вы можете добавлять или удалять элементы (короче говоря, он не имеет фиксированного размера), в то время как array имеет фиксированный размер. Это верно для List (Mutable list по умолчанию), если вы не используете Immutable List, который имеет фиксированный размер, как массив.

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