java arraylist conversions other collections
이 자습서에서는 Set, LinkedList, Lists 등과 같은 다른 컬렉션으로의 ArrayList 변환과 이러한 컬렉션 간의 차이점에 대해 설명합니다.
지금까지 Java의 ArrayList와 관련된 거의 모든 개념을 살펴 보았습니다. ArrayList 클래스에서 제공하는 다양한 작업 또는 메서드를 사용하여 ArrayList를 만들고 조작하는 것 외에도 ArrayList를 하나 이상의 컬렉션으로 변환해야하는 경우도 있습니다.
=> 처음부터 Java를 배우려면 여기를 방문하십시오.
이 자습서에서는 ArrayList에서 List, LinkedList, Vector, Set 등을 포함하는 다른 컬렉션으로의 변환에 대해 설명합니다. ArrayList와 String 간의 변환도 고려할 것입니다. 변환 후에는 ArrayList와 다른 컬렉션 (Arrays, List, Vector, LinkedList 등)의 차이점에 대해서도 설명합니다.
학습 내용 :
- ArrayList를 문자열로 변환
- 문자열을 ArrayList로 변환
- Java에서 목록을 ArrayList로 변환
- ArrayList를 Java에서 설정하도록 변환
- Java에서 집합을 ArrayList로 변환
- Java의 ArrayList 배열
- Java에서 배열의 ArrayList
- Java에서 목록 대 ArrayList
- 벡터 대 ArrayList
- ArrayList 대 LinkedList
- 자주 묻는 질문
- 결론
- 추천 도서
ArrayList를 문자열로 변환
다음 메서드를 사용하여 ArrayList를 String으로 변환 할 수 있습니다.
# 1) StringBuilder 객체 사용
import java.util.ArrayList; public class Main { public static void main(String args()) { //Create and initialize the ArrayList ArrayList strList = new ArrayList(); strList.add('Software'); strList.add('Testing'); strList.add('Help'); //print the ArrayList System.out.println('The ArrayList: ' + strList); //define a stringbuilder object StringBuffer sb = new StringBuffer(); //append each ArrayList element to the stringbuilder object for (String str : strList) { sb.append(str + ' '); } //convert stringbuilder to string and print it. String myStr = sb.toString(); System.out.println('
String from ArrayList: ' + myStr); } }
산출:
ArrayList : (소프트웨어, 테스트, 도움말)
ArrayList의 문자열 : 소프트웨어 테스팅 도움말
위의 프로그램에서 StringBuilder 객체가 생성됩니다. 그런 다음 forEach 루프를 사용하여 ArrayList의 각 요소가 StringBuilder 개체에 추가됩니다. 그런 다음 StringBuilder 개체가 문자열로 변환됩니다. StringBuilder 'append'메소드를 사용합니다. 적절한 구분 기호를 문자열에 추가 할 수도 있습니다.
위의 예에서는 구분자로 공백 ( '')을 사용했습니다.
# 2) String.join () 메서드 사용
String.join () 메서드를 사용하여 ArrayList를 String으로 변환 할 수 있습니다. 여기에서 적절한 구분 기호를 join 메소드에 전달할 수도 있습니다.
아래 프로그램이이를 보여줍니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { // create and initialize the ArrayList ArrayList metroList = new ArrayList(); metroList.add('Delhi'); metroList.add('Mumbai'); metroList.add('Chennai'); metroList.add('Kolkata'); //print the ArrayList System.out.println('The ArrayList: ' + metroList); // Join with an empty delimiter to concat all strings. String resultStr = String.join(' ', metroList); System.out.println('
String converted from ArrayList: '+resultStr); } }
산출:
ArrayList : (델리, 뭄바이, 첸나이, 콜카타)
ArrayList에서 변환 된 문자열 : Delhi Mumbai Chennai Kolkata
구분 기호와 함께 ArrayList를 String.join () 메서드에 인수로 직접 전달하는 것을 볼 수 있습니다.
간단한 String ArrayLists의 경우 String.join ()이 String으로 변환하는 가장 좋은 방법입니다. 그러나 더 복잡한 ArrayLists 객체의 경우 StringBuilder를 사용하는 것이 더 효율적입니다.
문자열을 ArrayList로 변환
문자열을 ArrayList로 변환하려면 두 단계가 있습니다.
- 문자열은 split () 함수를 사용하여 분할되고 하위 문자열 (적절한 구분 기호로 분할)은 문자열 배열에 저장됩니다.
- 문자열을 분할하여 얻은 문자열 배열은 Arrays 클래스의 'asList ()'메서드를 사용하여 ArrayList로 변환됩니다.
문자열을 ArrayList로 변환하는 프로그램은 다음과 같습니다.
import java.util.ArrayList; import java.util.List; import java.util.Arrays; public class Main { public static void main(String args()){ //define a string String myStr = 'The string to ArrayList program'; //convert string to array using split function on spaces String strArray() = myStr.split(' '); //print the string System.out.println('The input string : ' + myStr); //declare an ArrayList List strList = new ArrayList(); //convert string array to ArrayList using asList method strList = Arrays.asList(strArray); //print the resultant ArrayList System.out.println('
The ArrayList from String:' + strList ); } }
산출:
입력 문자열 : ArrayList 프로그램에 대한 문자열
String의 ArrayList : (The, string, to, ArrayList, program)
위의 프로그램에서 문자열을 공백으로 분할하고 문자열 배열로 수집합니다. 이 배열은 문자열의 ArrayList로 변환됩니다.
Java에서 목록을 ArrayList로 변환
ArrayList는 List 인터페이스를 구현합니다. List를 ArrayList와 같은 구현으로 변환하려면 List 인터페이스의 addAll 메서드를 사용하면됩니다.
아래 프로그램은 모든 목록 요소를 ArrayList에 추가하여 목록을 ArrayList로 변환하는 것을 보여줍니다.
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String a()){ //create a list & initiliaze it List collections_List = new ArrayList(); collections_List.add('ArrayList'); collections_List.add('Vector'); collections_List.add('LinkedList'); collections_List.add('Stack'); collections_List.add('Set'); collections_List.add('Map'); //print the list System.out.println('List contents: '+collections_List); //create an ArrayList ArrayList myList = new ArrayList(); //use addAll() method to add list elements to ArrayList myList.addAll(collections_List); //print the ArrayList System.out.println('
ArrayList after adding elements: '+myList); } }
산출:
목록 내용 : (ArrayList, Vector, LinkedList, Stack, Set, Map)
요소 추가 후 ArrayList : (ArrayList, Vector, LinkedList, Stack, Set, Map)
ArrayList를 Java에서 설정하도록 변환
다음 메서드는 ArrayList를 Set으로 변환합니다.
# 1) 전통적인 반복 접근 방식 사용
이것이 전통적인 접근 방식입니다. 여기에서 목록을 반복하고 ArrayList의 각 요소를 집합에 추가합니다.
아래 프로그램에는 문자열의 ArrayList가 있습니다. 문자열의 HashSet을 선언합니다. 그런 다음 forEach 루프를 사용하여 ArrayList를 반복하고 각 요소를 HashSet에 추가합니다.
비슷한 방식으로 ArrayList를 treeSet으로 변환 할 수도 있습니다.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a HashSet Set hSet = new HashSet(); //Add each ArrayList element to the set for (String x : colorsList) hSet.add(x); //Print the HashSet System.out.println('
HashSet obtained from ArrayList: ' + hSet); } }
산출:
ArrayList : (빨간색, 녹색, 파란색, 청록색, 자홍색, 노란색)
ArrayList에서 얻은 HashSet : (빨강, 청록, 파랑, 노랑, 마젠타, 녹색)
# 2) 집합 생성자 사용
ArrayList를 집합으로 변환하는 다음 방법은 생성자를 사용하는 것입니다. 이 메서드에서는 ArrayList를 set 생성자에 인수로 전달하여 ArrayList 요소로 set 객체를 초기화합니다.
아래 프로그램은 set 객체를 생성 할 때 ArrayList를 사용하는 것을 보여줍니다.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a TreeSet Set tSet = new TreeSet(colorsList); //Print the TreeSet System.out.println('
TreeSet obtained from ArrayList: ' + tSet); } }
산출:
ArrayList : (빨간색, 녹색, 파란색, 청록색, 자홍색, 노란색
ArrayList에서 얻은 TreeSet : (파란색, 청록색, 녹색, 마젠타 색, 빨간색, 노란색)
# 3) addAll 메소드 사용
Set의 addAll 메서드를 사용하여 ArrayList의 모든 요소를 집합에 추가 할 수도 있습니다.
다음 프로그램은 addAll 메서드를 사용하여 ArrayList의 요소를 HashSet에 추가합니다.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a HashSet Set hSet = new HashSet(); //use addAll method of HashSet to add elements of ArrayList hSet.addAll(colorsList); //Print the HashSet System.out.println('
HashSet obtained from ArrayList: ' + hSet); } }
산출:
ArrayList : (빨간색, 녹색, 파란색, 청록색, 자홍색, 노란색)
ArrayList에서 얻은 HashSet : (빨강, 청록, 파랑, 노랑, 마젠타, 녹색)
# 4) Java 8 Stream 사용
스트림은 Java 8에 새로 추가 된 것입니다.이 스트림 클래스는 ArrayList를 스트림으로 변환 한 다음 설정하는 방법을 제공합니다.
아래의 Java 프로그램은 ArrayList를 set으로 변환하는 스트림 클래스 메소드의 사용을 보여줍니다.
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); // Convert ArrayList to set using stream Set set = colorsList.stream().collect(Collectors.toSet()); //Print the Set System.out.println('
Set obtained from ArrayList: ' + set); } }
산출:
ArrayList : (빨간색, 녹색, 파란색, 청록색, 자홍색, 노란색)
ArrayList에서 얻은 집합 : (빨강, 청록, 파랑, 노랑, 자홍, 녹색)
Java에서 집합을 ArrayList로 변환
마지막 섹션에서 ArrayList를 Set으로 변환하는 것을 보았습니다. Set에서 ArrayList 로의 변환은 또한 set와 ArrayList의 위치가 변경된다는 차이점을 제외하고 위에서 설명한 것과 동일한 방법을 사용합니다.
다음은 Set을 ArrayList로 변환하는 프로그래밍 예제입니다. 각 방법에 대한 다른 설명은 동일하게 유지됩니다.
# 1) 반복적 접근
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList ArrayList numList = new ArrayList(set.size()); //add each set element to the ArrayList using add method for (String str : set) numList.add(str); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
산출:
주어진 세트 : (하나, 둘, 셋)
Set에서 얻은 ArrayList : (One, Two, Three)
위의 프로그램에서 우리는 Set을 반복하고 각 set 요소가 ArrayList에 추가됩니다.
# 2) 생성자 사용
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList and pass set to the constructor List numList = new ArrayList(set); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
산출:
주어진 세트 : (하나, 둘, 셋)
Set에서 얻은 ArrayList : (One, Two, Three)
인터뷰에서 물어볼 질문
위의 프로그램은 집합과 ArrayList를 만듭니다. ArrayList 객체는 생성자의 인수로 set 객체를 제공하여 생성됩니다.
# 3) addAll 메소드 사용
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList List numList = new ArrayList(); //use addAll method of ArrayList to add elements of set numList.addAll(set); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
산출:
주어진 세트 : (하나, 둘, 셋)
Set에서 얻은 ArrayList : (One, Two, Three)
여기서는 ArrayList의 addAll 메서드를 사용하여 집합의 요소를 ArrayList에 추가합니다.
# 4) Java 8 Stream 사용
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList and using stream method,assign stream of elements to ArrayList List numList = set.stream().collect(Collectors.toList()); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
산출:
주어진 세트 : (하나, 둘, 셋)
Set에서 얻은 ArrayList : (One, Two, Three)
위 프로그램은 스트림 클래스를 사용하여 Set을 ArrayList로 변환합니다.
Java의 ArrayList 배열
이름에서 알 수 있듯이 ArrayList의 Array는 ArrayLists를 요소로 구성합니다. 이 기능은 정기적으로 사용되지 않지만 메모리 공간의 효율적인 사용이 요구 될 때 사용됩니다.
다음 프로그램은 Java에서 ArrayLists의 배열을 구현합니다.
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String() args) { //define and initialize a num_list List num_list = new ArrayList(); num_list.add('One'); num_list.add('Two'); num_list.add('Two'); //define and initialize a colors_list List colors_list = new ArrayList(); colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); //define Array of ArrayList with two elements List() arrayOfArrayList = new List(2); //add num_list as first element arrayOfArrayList(0) = num_list; //add colors_list as second element arrayOfArrayList(1) = colors_list; //print the contents of Array of ArrayList System.out.println('Contents of Array of ArrayList:'); for (int i = 0; i 산출:
ArrayList의 배열 내용 :
(하나, 둘, 둘)
(빨강, 초록, 파랑)
위의 프로그램에서 먼저 두 개의 목록을 정의합니다. 그런 다음 두 ArrayList의 Array를 선언합니다. 이 배열의 각 요소는 이전에 정의 된 ArrayList입니다. 마지막으로 ArrayList의 Array 내용은 for 루프를 사용하여 표시됩니다.
Java에서 배열의 ArrayList
ArrayList의 Array가있는 것처럼 ArrayList의 Array도 가질 수 있습니다. 여기서 ArrayList의 각 개별 요소는 Array입니다.
아래 프로그램은 ArrayList의 Array를 보여줍니다.
import java.util.*; public class Main { public static void main(String() args) { // declare ArrayList of String arrays ArrayList ArrayList_Of_Arrays = new ArrayList(); //define individual string arrays String() colors = { 'Red', 'Green', 'Blue' }; String() cities = { 'Pune', 'Mumbai', 'Delhi'}; //add each array as element to ArrayList ArrayList_Of_Arrays.add(colors); ArrayList_Of_Arrays.add(cities); // print ArrayList of Arrays System.out.println('Contents of ArrayList of Arrays:'); for (String() strArr : ArrayList_Of_Arrays) { System.out.println(Arrays.toString(strArr)); } } }
산출:
배열의 ArrayList의 내용 :
(빨강, 초록, 파랑)
(푸네, 뭄바이, 델리)
위 프로그램은 ArrayList의 Array를 보여줍니다. 처음에는 String Array의 ArrayList를 선언합니다. 즉, ArrayList의 각 요소는 문자열 배열이됩니다. 다음으로 두 개의 문자열 배열을 정의합니다. 그런 다음 각 Array가 ArrayList에 추가됩니다. 마지막으로 ArrayList of Array의 내용을 인쇄합니다.
내용을 인쇄하기 위해 for 루프를 사용하여 ArrayList를 탐색합니다. 반복 할 때마다 Arrays.toString () 메서드를 사용하여 Array가있는 ArrayList 요소의 내용을 인쇄합니다.
Java에서 목록 대 ArrayList
다음 표는 List와 ArrayList의 몇 가지 차이점을 보여줍니다.
명부 ArrayList 목록은 Java의 인터페이스입니다. ArrayList는 Java Collection 프레임 워크의 일부입니다. 목록은 인터페이스로 구현됩니다. ArrayList는 컬렉션 클래스로 구현됩니다. 컬렉션 인터페이스 확장 List 인터페이스 구현 및 AbstractList 확장 System.Collection.generic 네임 스페이스의 일부 System.Collections 네임 스페이스의 일부 List를 사용하면 인덱스를 사용하여 액세스 할 수있는 요소 목록을 만들 수 있습니다. ArrayList를 사용하여 내용의 변경에 따라 크기가 자동으로 변경되는 요소 또는 객체의 동적 배열을 만들 수 있습니다.
벡터 대 ArrayList
다음은 Vector와 ArrayList의 차이점 중 일부입니다.
ArrayList LinkedList ArrayList는 List 인터페이스를 구현합니다. LinkedList는 List 및 Deque 인터페이스를 구현합니다. 데이터 저장 및 액세스는 ArrayList에서 효율적입니다. LinkedList는 데이터 조작에 능숙합니다. ArrayList는 내부적으로 동적 배열을 구현합니다. LinkedList는 내부적으로 이중 연결 목록을 구현합니다. ArrayList는 내부적으로 동적 배열을 구현하기 때문에 많은 비트 시프 팅이 필요하므로 요소의 추가 / 삭제가 느립니다. LinkedList는 비트 이동이 필요하지 않기 때문에 요소의 추가 / 제거에 관한 한 더 빠릅니다. ArrayList에는 실제 데이터 만 저장되므로 메모리 오버 헤드가 적습니다. LinkedList의 각 노드에는 데이터와 다음 노드의 주소가 포함되어 있으므로 더 많은 메모리 오버 헤드가 발생합니다.
ArrayList 대 LinkedList
이제 ArrayList와 LinkedList의 다양한 차이점에 대해 설명하겠습니다.
ArrayList LinkedList ArrayList는 List 인터페이스를 구현합니다. LinkedList는 List 및 Deque 인터페이스를 구현합니다. 데이터 저장 및 액세스는 ArrayList에서 효율적입니다. LinkedList는 데이터 조작에 능숙합니다. ArrayList는 내부적으로 동적 배열을 구현합니다. LinkedList는 내부적으로 이중 연결 목록을 구현합니다. ArrayList는 내부적으로 동적 배열을 구현하기 때문에 많은 비트 시프 팅이 필요하므로 요소의 추가 / 삭제가 느립니다. LinkedList는 비트 이동이 필요하지 않기 때문에 요소의 추가 / 제거에 관한 한 더 빠릅니다. ArrayList에는 실제 데이터 만 저장되므로 메모리 오버 헤드가 적습니다. LinkedList의 각 노드에는 데이터와 다음 노드의 주소가 포함되어 있으므로 더 많은 메모리 오버 헤드가 발생합니다.
자주 묻는 질문
Q # 1) Java에서 ArrayList를 Array로 어떻게 변환합니까?
대답: ArrayList를 Java의 Array로 변환하려면 지정된 ArrayList를 Array로 변환하는 ArrayList API의 toArray () 메서드를 사용할 수 있습니다.
질문 # 2) 문자열을 분할하고 Java의 ArrayList에 저장하는 방법은 무엇입니까?
대답: 문자열은 split () 함수를 사용하여 분할됩니다. 이 메서드는 문자열 배열을 반환합니다. 그런 다음 Arrays.asList () 메서드를 사용하여 문자열 배열을 문자열의 ArrayList로 변환 할 수 있습니다.
Q # 3) ArrayList의 기본 크기는 얼마입니까?
대답: 용량을 지정하지 않고 생성 된 ArrayList 객체는 목록에 추가 된 요소가 없기 때문에 크기가 0입니다. 그러나이 ArrayList의 기본 용량은 10입니다.
Q # 4) ArrayList의 길이 ()와 크기 ()의 차이는 무엇입니까?
대답: ArrayList에는 길이 () 속성 또는 메서드가 없습니다. ArrayList의 총 요소 수를 반환하는 size () 메서드 만 제공합니다.
Q # 5) ArrayList의 용량과 크기의 차이는 무엇입니까?
대답: ArrayList는 용량과 크기를 모두 가지고 있습니다. 용량은 ArrayList의 총 크기 또는 보유 할 수있는 총 요소 수입니다. 크기는 데이터가있는 요소 또는 위치의 수입니다.
예를 들면 ArrayList 용량이 10이고 크기가 5이면 ArrayList가 최대 10 개의 요소를 보유 할 수 있지만 현재는 5 개 위치에만 데이터가 있습니다.
결론
이 자습서에서는 ArrayList를 문자열, 목록, 집합으로 변환하는 것과 같은 ArrayList와 관련된 몇 가지 추가 개념에 대해 논의했습니다. 또한 ArrayList와 Vector, ArrayList와 LinkedList 등의 차이점에 대해서도 논의했습니다.
다가오는 튜토리얼에서 우리는 다른 컬렉션을 가져와 철저하게 배울 것입니다.
=> 여기에서 Java 교육 자습서의 A-Z를 보려면 여기를 확인하십시오.
추천 도서