Предисловие:
В этой статье представлено сравнение преимуществ и недостатков трех ситуаций преобразования массивов в список в Java, а также сравнение сценариев применения и анализ причин ошибок конверсии типа, которые часто делают программисты.
1. Наиболее распространенный способ (не обязательно лучший)
После преобразования массива в список через Arrays.asList(strArray) вы не можете добавить или удалить список. Вы можете только проверить и изменить его, в противном случае будет брошено исключение.
Код ключа: List list = Arrays.asList(strArray);
private void testarraycasttolisterror () {string [] strarray = new String [2]; Список списка = arrays.aslist (strarray); // вставить данные в конвертированный список списка. ADD ("1"); System.out.println (список); }Результаты исполнения:
Исключение в потоке "Main" java.lang.unsupportedoPerationException
на java.util.abstractlist.add (Abstractlist.java:148)
на java.util.abstractlist.add (Abstractlist.java:108)
на com.darwin.junit.calculator.testarraycasttolist (Calculator.java:19)
на com.darwin.junit.calculator.main (Calculator.java:44)
Программа бросает исключение в list.add(“1”) . UnsupportedOperationException.
Анализ причин:
Возвращающаяся стоимость Arrays.asList(strArray) - это частный статический внутренний класс java.util.Arrays class java.util.Arrays.ArrayList , который не является классом java.util.ArrayList . Класс java.util.Arrays.ArrayList имеет set() , get() , contains() и другие методы, но не имеет метода добавления add() или удаления remove() , поэтому вызов add() вызовет ошибку.
Сценарий использования: метод Arrays.asList(strArray) может использоваться только после преобразования массива в список. Нет необходимости добавлять или удалять значения в нем, и он используется только в качестве источника данных для чтения.
2. После того, как массив преобразуется в список, он поддерживает метод добавления, удаления, изменения и поиска.
Через конструктор ArrayList преобразуйте возвращаемое значение Arrays.asList(strArray) из java.util.Arrays.ArrayList в java.util.ArrayList .
Код ключа: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void testarraycasttolistright () {string [] strarray = new String [2]; Arraylist <string> list = new ArrayList <string> (arrays.aslist (strarray)); list.add ("1"); System.out.println (список); }Результат выполнения: элемент «1» был успешно добавлен.
[NULL, NULL, 1]
Сценарий использования: после преобразования массива в список вам необходимо добавить, удалять, изменять и проверить список. Его можно использовать, если объем данных в списке не большой.
3. Через метод класса инструментов сбора.
Преобразуйте через Collections.addAll(arrayList, strArray) , создайте список одинаковой длины в соответствии с длиной массива, а затем преобразуйте элементы в массиве в бинарный метод через метод Collections.addAll() , а затем добавьте его в список. Это самый эффективный метод.
Ключевой код:
Arraylist <string> arraylist = new Arraylist <string> (strarray.length); collections.addall (arraylist, strarray);
тест:
private void testarraycasttolisteffict () {string [] strarray = new String [2]; Arraylist <string> arraylist = new ArrayList <string> (strarray.length); Collections.addall (Arraylist, Strarray); arraylist.add ("1"); System.out.println (ArrayList); }Результат выполнения: также успешно добавил элемент «1».
[NULL, NULL, 1]
Сценарий использования: после преобразования массива в список вам необходимо добавить, удалять, изменять и проверить список. Когда объем данных списка огромный, предпочитает его использовать, что может улучшить скорость работы.
Примечание. Прикрепите исходный код метода Collections.addAll() :
public static <t> boolean addall (collection <? super t> c, t ... elements) {boolean result = false; для (t -элемент: элементы) результат | = C.Add (элемент); // Результат и C.Add (элемент) или операция, а затем назначьте значение для результата возврата; }Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.