Как преобразовать массив в список
Источник: Rrtutors В этой публикации вы узнаете различные способы преобразования массива в список Java.
- Создание пустого списка и добавление элементов
- Использование метода Arrays.asList()
- Использование new ArrayList<>(Arrays.asList(arr))
Способ 1. Создание пустого списка и последующее добавление элементов
Этот метод — самый простой из трех, поэтому большинство разработчиков предпочитают использовать именно его. Все, что вам нужно сделать, это выполнить три простых шага:- Создайте пустой список.
- Выполните итерацию по массиву элементов.
- Добавьте эти элементы в свой список.
import java.util.ArrayList;
import java.util.List;
public class Create_List_add_arrays {
public static void main(String[] args) {
String[] OurArray = new String[] { "123", "456", "789" };
List<String> ourList = new ArrayList<>();
for (int i=0; i<OurArray.length; i++){
ourList.add(OurArray[i]);
}
System.out.println (ourList);
}
}
Вывод:
[123, 456, 789]
Способ 2. Использование метода Arrays.asList()
Здесь мы будем использовать Arrays.asList (arr) — встроенный метод, предоставляемый Arrays для преобразования массива в список. Давайте посмотрим на приведенный ниже пример того, как реализован этот встроенный метод:
package Using_Arrays;
import java.util.Arrays;
import java.util.List;
public class using_method {
public static void main(String[] args) {
String[] OurArray = new String[] { "100", "200", "300" };
List<String> OurList = Arrays.asList(OurArray);
System.out.println(OurList);
}
}
Вывод:
[100, 200, 300]
Учтите, что этот способ работает только при создании списка фиксированного размера, что означает, что вы не сможете добавить в него больше элементов.
Способ 3. Использование new ArrayList<>(Arrays.asList(arr))
В этом способе мы просто используем новый список arrayList<>(Arrays.asList(integers)); чтобы преобразовать наш массив в список. Основное преимущество этого метода перед предыдущим заключается в том, что созданный массив позволяет пользователю добавлять в список больше элементов. Давайте посмотрим на пример кода:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayList_methods {
public static void main(String[] args) {
String[] ourArray = new String[] { "100", "200", "300" };
List<String> ourList = new ArrayList<>(Arrays.asList(ourArray));
System.out.println("Наш массив: " + ourList);
ourList.add("400");
System.out.println("После добавления нового элемента: " + ourList );
}
}
Вывод:
Наш массив: [100, 200, 300]
После добавления нового элемента: [100, 200, 300, 400]
18 каверзных вопросов для собеседования по Java
Источник: Medium Вашему вниманию предлагается подборка каверзных вопросов, которые может задать интервьюер на собеседовании по Java.
Что лучше всего подходит для ключа HashMap? Могут ли строки быть хорошим вариантом для этого?
Неизменяемые объекты — хорошие кандидаты для использования в виде ключа HashMap, поскольку их нельзя изменить после создания. Ведь строки неизменяемы по своей природе.Может ли переменная быть одновременно local и static?
Нет, переменная не может быть одновременно local и static, это приведет к ошибке компиляции. На локальном уровне разрешен только final.Можно ли определить метод в классе Java и обеспечить его реализацию на другом языке программирования, таком как C++?
Да, это можно сделать, используя собственный стек методов. В этом случае мы определим общедоступные статические методы в нашем классе Java без его реализации, а затем предоставим реализацию на другом языке, таком как C++.Можем ли мы использовать конструктор класса по умолчанию, даже если определен явный конструктор?
Если у нас есть параметризованный конструктор, мы не можем автоматически вызвать внутренний конструктор по умолчанию (default), это приведет к ошибке компиляции.Если поток выполняет синхронизированные методы, возможно ли одновременное выполнение другого синхронизированного метода другим потоком?
Нет, невозможно выполнить синхронизированный метод другими потоками, когда поток находится внутри синхронизированного метода.Если два потока имеют одинаковый приоритет, какой поток будет выполнен первым?
Это полностью зависит от планировщика потоков, какой поток выполнять. Планировщик может выбрать любой поток из пула и запустить его до его завершения, или он может предоставить равные возможности для всех потоков путем разделения времени.Можно ли метод sleep() использовать с другим потоком?
Нет. Метод sleep() можно использовать только в текущем потоке.В контексте потока, когда будет вызвано исключение IllegalMonitorStateException?
Когда wait(), notify(), notifyall() вызываются в несинхронизированном контексте, мы получим исключение IllegalMonitorStateException.Можем ли мы сериализовать статические переменные в Java?
Мы не можем сериализовать статическую переменную в Java. Причина в том, что статическая переменная — это класс, который принадлежит классу, но не объекту. А сериализация сохраняет только состояние объекта, а не состояние класса.Почему строка неизменяема по своей природе?
Основной причиной неизменяемости строки является безопасность, поскольку строки совместно используются в разных областях, таких как файловые системы, сети, базы данных и так далее. Неизменяемость позволяет обеспечить безопасность и надежность строки, чтобы никто не мог изменить ссылку на нее после ее создания. Еще одна причина заключается в том, чтобы избежать изменения общих ссылок.Можем ли мы использовать оператор присваивания в блоке if?
Да, переменные могут быть назначены в блоке if, но не могут быть объявлены в блоке if.
int i;
if((i = someMethod()) != 0) return true;
В чем разница между синхронизированным блоком и синхронизированным методом?
Между ними нет видимой разницы, оба достигают одной и той же цели. Важно то, в каком контексте они используются. Ключевое слово synchronized, используемое на уровне метода, делает весь метод потокобезопасным. В то время как синхронизированный блок делает потокобезопасным только код, написанный внутри него.Можем ли мы иметь статический метод и нестатический метод с одинаковым именем в одном классе?
Нет, у нас не может быть статического метода и нестатического метода с одинаковым именем в одном классе, компилятор выдаст ошибку времени компиляции. Показанный ниже сценарий не допускается.
class Main{
public static void main(){
//some code
}
public void main(){
//some code
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ