arraylist methods java tutorial with example programs
이 튜토리얼에서는 예제를 통해 add, addAll, remove, removeAll, size, contains, preserveAll, Sort, Reverse 등과 같은 Java ArrayList 메소드에 대해 설명합니다.
이전 튜토리얼에서 우리는 ArrayList 데이터 구조와이 데이터 구조 / 컬렉션을 위해 Java로 제공되는 ArrayList 클래스를 살펴 보았습니다. ArrayList 객체의 생성, 초기화 등을 배웠습니다.
ArrayList를 정의하는 데 도움이되는 이러한 기능 외에도 Java의 ArrayList 클래스는 ArrayList 객체를 조작하는 데 사용되는 메서드로 구성된 완전한 함수 API를 제공합니다.
이러한 메서드를 사용하면 ArrayList에서 요소를 추가, 삭제, 검색 할 수있을뿐만 아니라 ArrayList 요소의 길이 / 크기 등을 검색 할 수 있습니다.
이 튜토리얼에서는 간단한 프로그래밍 예제를 통해 이러한 방법에 대해 자세히 설명합니다.
학습 내용 :
- Java의 ArrayList 메서드
- ArrayList 추가
- ArrayList addAll
- ArrayList 추가
- ArrayList 제거
- ArrayList removeAll
- ArrayList removeRange
- ArrayList 크기 (길이)
- ArrayList 포함
- ArrayList 가져 오기
- ArrayList 세트 (요소 바꾸기)
- ArrayList 지우기
- ArrayList isEmpty
- ArrayList indexOf
- ArrayList lastIndexOf
- ArrayList toArray
- ArrayList 클론
- ArrayList 하위 목록
- ArrayList preserveAll
- ArrayList 반복자
- ArrayList listIterator
- Java에서 ArrayList에 배열 추가
- Java에서 ArrayList 정렬
- Java에서 ArrayList 반전
- Java의 ArrayList에서 중복 제거
- 자바에서 ArrayList 셔플 (무작위 화)
- 자주 묻는 질문
- 결론
Java의 ArrayList 메서드
다음 표에는 ArrayList 클래스에서 제공하는 모든 메서드가 나열되어 있습니다.
방법 | 방법 프로토 타입 | 방법 설명 |
---|---|---|
포함 | 부울 contains (Object o) | 목록에 주어진 요소 'o'가 포함되어 있는지 확인합니다. 요소가 있으면 true를 반환합니다. |
더하다 | 부울 추가 (E e) | 주어진 요소 e를 목록 끝에 추가합니다. |
void add (int index, E 요소) | 지정된 위치 'index'에 지정된 요소 'element'를 추가합니다. | |
모두 추가 | boolean addAll (콜렉션 c) | 주어진 콜렉션 c의 모든 요소를 목록 끝에 추가합니다. |
부울 addAll (int index, Collection c) | 목록의 'index'로 지정된 위치에 지정된 컬렉션 c의 모든 요소를 추가합니다. | |
맑은 | 무효 clear () | 목록에서 모든 요소를 제거하여 목록을 지 웁니다. |
복제 | 개체 clone () | 지정된 ArrayList의 얕은 복사본을 만듭니다. |
ensureCapacity | void ensureCapacity (int minCapacity) | minCapacity를 갖도록 ArrayList의 용량을 늘립니다. |
가져 오기 | E get (int 인덱스) | 목록에서 'index'로 지정된 위치에있는 요소를 반환합니다. |
indexOf | int indexOf (객체 o) | 목록에서 첫 번째 요소 o의 색인을 리턴합니다. 요소 o가 목록에 없으면 -1입니다. |
비었다 | 부울 isEmpty () | 주어진 목록이 비어 있는지 확인합니다. |
반복자 | 반복기 iterator () | 적절한 순서로 목록 요소를 순회하는 반복기를 리턴합니다. |
lastIndexOf | int lastIndexOf (객체 o) | 목록에서 지정된 요소 o의 마지막 발생 색인을 리턴합니다. 요소가 목록에 없으면 -1입니다. |
listIterator | ListIterator listIterator () | 주어진 목록의 요소를 순회 할 목록 반복기를 반환합니다. |
ListIterator listIterator (int 인덱스) | 지정된 목록의 요소를 순회하기 위해 지정된 위치 'index'에서 시작하는 목록 반복기를 반환합니다. | |
없애다 | E 제거 (int 인덱스) | ArrayList의 'index'에서 요소를 삭제합니다. |
부울 제거 (Object o) | 목록에서 첫 번째 요소 o를 삭제합니다. | |
모두 제거 | boolean removeAll (컬렉션 c) | 지정된 컬렉션의 요소와 일치하는 모든 요소를 목록에서 제거합니다. c. |
removeRange | protected void removeRange (int fromIndex, int toIndex) | 목록에서 fromIndex (포함)에서 toIndex (제외)까지 지정된 범위에 지정된 요소를 제거합니다. |
유지 | boolean preserveAll (컬렉션 c) | 지정된 컬렉션의 요소와 일치하는 목록의 요소를 유지합니다. c. |
세트 | E 세트 (정수 인덱스, E 요소) | 주어진 'index'에있는 요소 값을 'element'에 의해 주어진 새 값으로 설정합니다. |
크기 | int 크기 () | 목록의 총 요소 수 또는 길이를 반환합니다. |
하위 목록 | 목록 subList (int fromIndex, int toIndex) | 주어진 목록에 대해 주어진 범위 (fromIndex에서 toIndex까지) 사이의 subList를 리턴합니다. |
toArray | Object () toArray () | 주어진 목록을 배열로 변환합니다. |
T () toArray (T () a) | 주어진 목록을 a에 의해 주어진 유형의 배열로 변환합니다. | |
trimToSize | void trimToSize () | ArrayList 용량을 목록에있는 요소의 크기 또는 수로 자릅니다. |
다음으로 ArrayList 함수 API의 각 메서드에 대해 자세히 설명하고 프로그래밍 예제를 제공합니다. 위에 나열된 모든 메서드를 논의한 후 ArrayList 함수 API의 일부가 아닌 ArrayLists를 사용하여 수행되는 특정 작업도 살펴 보겠습니다.
ArrayList 추가
나는
원기: 부울 더하기 (E e)
매개 변수 : e => ArrayList에 추가 할 요소.
반환 값 : true => 요소가 성공적으로 추가되었습니다.
기술: 주어진 요소 e를 목록 끝에 추가합니다.
II.
원기: void add (int 인덱스, E 요소)
매개 변수 :
index => 요소가 추가 될 위치.
Element => ArrayList에 추가 할 요소.
반환 값 : 빈
기술: 해당 위치의 요소와 후속 요소를 오른쪽으로 이동하여 지정된 위치 '인덱스'에 주어진 요소 '요소'를 추가합니다.
예외 : IndexOutOfBoundsException => 지정된 인덱스가 범위를 벗어난 경우.
ArrayList addAll
나는
원기: boolean addAll (콜렉션 c)
매개 변수 : c => 요소가 ArrayList에 추가 될 컬렉션.
반환 값 : true => 작업이 ArrayList를 변경 한 경우.
기술: 주어진 콜렉션 c의 모든 요소를 목록 끝에 추가합니다. 작업이 진행 중일 때 컬렉션이 변경되면 작업 결과가 정의되지 않습니다.
예외 : NullPointerException => 주어진 컬렉션 c가 null 인 경우.
일
원기: 부울 addAll (int index, Collection c)
매개 변수 : index => 주어진 컬렉션의 요소가 추가 될 위치.
반환 값 : true => 작업의 결과로 목록이 변경된 경우.
기술: 목록의 'index'로 지정된 위치에 지정된 컬렉션 c의 모든 요소를 추가합니다. 지정된 인덱스의 요소와 후속 요소가 오른쪽으로 이동합니다. 작업이 진행 중일 때 추가되는 컬렉션이 변경되면 작업의 결과가 정의되지 않습니다.
예외 : IndexOutOfBoundsException : 컬렉션을 추가 할 인덱스가 범위를 벗어난 경우
NullPointerException : 지정된 컬렉션 c가 null 인 경우
다음 Java 프로그램은 add 및 addAll 메소드의 사용법을 보여줍니다.
Windows 용 방화벽 구축 방법
import java.util.*; class Main{ public static void main(String args()){ //create an ArrayList ArrayList city_List=new ArrayList(); //add elements to the ArrayList using add method city_List.add('Delhi'); city_List.add('Mumbai'); city_List.add('Chennai'); city_List.add('Kolkata'); //print the list System.out.println('Initial ArrayList:' + city_List); //add an element at index 1 using add method overload city_List.add(1, 'NYC'); //print the list System.out.println('
rrayList after adding element at index 1:' + city_List); //define a second list ArrayList more_Cities = new ArrayList(Arrays.asList('Pune', 'Hyderabad')); //use addAll method to add the list to ArrayList at index 4 city_List.addAll(4,more_Cities); //print the list System.out.println('
ArrayList after adding list at index 4:' + city_List); } }
산출:
초기 ArrayList : (델리, 뭄바이, 첸나이, 콜카타)
색인 1에 요소를 추가 한 후 rrayList : (Delhi, NYC, Mumbai, Chennai, Kolkata)
인덱스 4에 목록을 추가 한 후 ArrayList : (Delhi, NYC, Mumbai, Chennai, Pune, Hyderabad, Kolkata)
위 프로그램은 목록에 요소를 추가하기 위해 두 버전의 add 메소드를 모두 사용합니다. 또한 지정된 인덱스의 목록에 컬렉션을 추가합니다. 프로그램의 출력에서 분명한 것처럼 요소가 ArrayList의 오른쪽으로 이동하는 것에 유의하십시오.
ArrayList 추가
이미 언급했듯이 add 메서드의 첫 번째 버전은 목록 끝에 요소를 추가합니다. ArrayList의 시작 부분에 요소를 추가하려면 add 메서드의 두 번째 버전을 사용해야합니다. 이 추가 메소드는 인덱스를 매개 변수로 사용합니다. 이 색인은 요소가 추가 될 위치입니다.
따라서 목록의 시작 부분에 요소를 추가하려면 목록의 시작 인 인덱스를 0으로 지정해야합니다.
다음 프로그램은 ArrayList의 앞에 요소를 추가합니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { //define new ArrayList and initialize it ArrayList numList = new ArrayList(); numList.add(5); numList.add(7); numList.add(9); //print the ArrayList System.out.println('Initial ArrayList:'); System.out.println(numList); //use add method with index=0 to add elements to the beginning of the list numList.add(0, 3); numList.add(0, 1); System.out.println('ArrayList after adding elements at the beginning:'); //print ArrayList System.out.println(numList); } }
산출:
초기 ArrayList :
(5, 7, 9)
처음에 요소를 추가 한 후 ArrayList :
(1, 3, 5, 7, 9)
ArrayList 제거
나는.
원기: E 제거 (int 인덱스)
매개 변수 : index => ArrayList에서 요소를 제거 할 위치입니다.
반환 값 : E => 삭제 된 요소
기술: ArrayList의 'index'에서 요소를 삭제하고 후속 요소를 왼쪽으로 이동합니다.
예외 : IndexOutOfBoundsException => 지정된 인덱스가 범위를 벗어났습니다.
II.
원기: 부울 제거 (Object o)
매개 변수 : o => ArrayList에서 제거 할 요소.
반환 값 : true => 요소가 목록에있는 경우.
기술: 목록에서 첫 번째 요소 o를 삭제합니다. 요소가 목록에 없으면이 작업의 효과가 없습니다. 요소가 삭제되면 후속 요소가 왼쪽으로 이동합니다.
ArrayList removeAll
원기: boolean removeAll (콜렉션 c)
매개 변수 : c => 요소가 ArrayList의 요소와 일치하고 제거 될 컬렉션.
반환 값 : true => 작업에 의해 ArrayList가 변경된 경우.
기술: 주어진 콜렉션의 요소와 일치하는 모든 요소를 목록에서 제거합니다. c. 결과적으로 남은 요소는 목록의 왼쪽으로 이동합니다.
예외 : ClassCastException => 클래스가 클래스가 호환되지 않음을 의미하는 지정된 컬렉션의 클래스와 동일하지 않습니다.
NullPointerException => 주어진 컬렉션 c가 null 인 경우; 또는 c에 null 요소가 있고 컬렉션에서 허용되지 않는 경우.
ArrayList removeRange
원기: protected void removeRange (int fromIndex, int toIndex)
매개 변수 : fromIndex => 제거 할 범위의 시작 요소 색인입니다.
toIndex => 제거 할 범위에서 마지막 요소 뒤의 요소 색인입니다.
반환 값 : 빈
기술: 목록에서 fromIndex (포함)에서 toIndex (제외)까지 지정된 범위에 지정된 요소를 제거합니다. 이 작업은 (toIndex-fromIndex)만큼 목록의 길이를 줄입니다. 이 작업은 fromIndex = toIndex 인 경우 효과가 없습니다.
예외 : IndexOutOfBoundsException => 인덱스 (fromIndex 또는 toIndex) 중 하나가 범위를 벗어난 경우.
위에서 논의한 제거 메소드 중 일부를 보여주기 위해 Java 프로그램을 구현해 보겠습니다.
import java.util.*; class Main{ public static void main(String args()){ //create an ArrayList ArrayList city_List=new ArrayList(Arrays.asList('Delhi','Mumbai','Chennai', 'Kolkata', 'Pune', 'Hyderabad')); //print the list System.out.println('Initial ArrayList:' + city_List); //remove element at index 2 city_List.remove(2); //print the list System.out.println('
ArrayList after removing element at index 2:' + city_List); //remove the element 'Kolkata' city_List.remove('Kolkata'); //print the list System.out.println('
ArrayList after removing element -> Kolkata:' + city_List); //create new list ArrayList newCities=new ArrayList(Arrays.asList('Delhi','Hyderabad')); //call removeAll to remove elements contained in newCities list. city_List.removeAll(newCities); //print the list System.out.println('
ArrayList after call to removeAll:' + city_List); } }
산출:
초기 ArrayList : (델리, 뭄바이, 첸나이, 콜카타, 푸네, 하이데라바드
인덱스 2에서 요소를 제거한 후 ArrayList : (Delhi, Mumbai, Kolkata, Pune, Hyderabad)
요소 제거 후 ArrayList-> Kolkata : (Delhi, Mumbai, Pune, Hyderabad)
removeAll : (뭄바이, 푸네) 호출 후 ArrayList
ArrayList 크기 (길이)
원기: int 크기 ()
매개 변수 : 무
반환 값 : int => ArrayList의 요소 수입니다.
기술: 총 요소 수 또는 ArrayList의 길이를 반환합니다.
ensureCapacity
원기: void ensureCapacity (int minCapacity)
매개 변수 : minCapacity => ArrayList에 필요한 최소 용량입니다.
반환 값 : 빈
기술: minCapacity가 있는지 확인하기 위해 ArrayList의 용량을 늘립니다.
trimToSize
원기: void trimToSize ()
매개 변수 : 무
반환 값 : 빈
기술: ArrayList 용량을 목록에있는 요소의 크기 또는 수로 자릅니다.
아래 프로그래밍 예제는 size (), ensureCapacity () 및 trimToSize () 메서드를 보여줍니다.
import java.util.ArrayList; public class Main { public static void main(String () args) { //Create and initialize Arraylist ArrayList evenList=new ArrayList(5); System.out.println('Initial size: '+evenList.size()); evenList.add(2); evenList.add(4); evenList.add(6); evenList.add(8); evenList.add(10); //print the list and size System.out.println('Original List: ' + evenList); System.out.println('ArrayList Size after add operation: '+evenList.size()); //call ensureCapacity () with minimum capacity =10 evenList.ensureCapacity(10); //add two more elements evenList.add(12); evenList.add(14); //print the size again System.out.println('ArrayList Size after ensureCapacity() call and add operation: '+evenList.size()); //call trimToSize() evenList.trimToSize(); //print the size and the ArrayList System.out.println('ArrayList Size after trimToSize() operation: '+evenList.size()); System.out.println('ArrayList final: '); for(int num: evenList){ System.out.print(num + ' '); } } }
산출:
초기 크기 : 0
원본 목록 : (2, 4, 6, 8, 10)
추가 작업 후 ArrayList 크기 : 5
ensureCapacity () 호출 후 ArrayList 크기 및 작업 추가 : 7
trimToSize () 작업 후 ArrayList 크기 : 7
ArrayList 최종 :
24 6 8 10 12 14
ArrayList 포함
원기: 부울 포함 (Object o)
매개 변수 : o => ArrayList에있는 경우 확인할 요소입니다.
반환 값 : true => ArrayList에 요소 o가 포함 된 경우.
기술: 목록에 주어진 요소 'o'가 포함되어 있는지 확인합니다. 요소가 있으면 true를 반환합니다.
다음 프로그램에서는 'contains'방법을 사용합니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { //create and initialize colorsList ArrayList colorsList = new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('White'); //call contains method to check if different strings are present in ArrayList System.out.println('ArrayList contains ('Red Green'): ' +colorsList.contains('Red Green')); System.out.println('ArrayList contains ('Blue'): ' +colorsList.contains('Blue')); System.out.println('ArrayList contains ('Yellow'): ' +colorsList.contains('Yellow')); System.out.println('ArrayList contains ('White'): ' +colorsList.contains('White')); } }
산출:
ArrayList에 (‘Red Green’) 포함 : false
ArrayList에 (‘Blue’) 포함 : true
ArrayList에 (‘Yellow’) 포함 : false
ArrayList에 (‘White’) 포함 : true
위 출력에서 볼 수 있듯이 'contains'메서드는 제공된 인수가 ArrayList에 있는지 확인하고 true 또는 false를 반환합니다.
ArrayList 가져 오기
원기: E get (int 인덱스)
매개 변수 : index => ArrayList에서 요소를 검색 할 인덱스입니다.
반환 값 : E => ArrayList의 지정된 인덱스에있는 요소 값.
기술: 목록에서 'index'로 지정된 위치에있는 요소를 반환합니다.
예외 : IndexOutOfBoundsException => 인덱스가 범위를 벗어난 경우.
ArrayList 세트 (요소 바꾸기)
원기: E 세트 (int 인덱스, E 요소)
매개 변수 : index => 요소가 교체 될 인덱스.
Element => 지정된 인덱스에 설정할 새 요소입니다.
반환 값 : E => 설정 작업으로 대체되는 요소.
기술: 주어진 '인덱스'의 요소 값을 '요소'가 지정한 새 값으로 설정합니다.
예외 : IndexOutOfBoundsException => 인덱스가 범위를 벗어난 경우
아래의 Java 프로그램은 get () 및 set () 메소드를 사용하여 ArrayList의 값을 검색하고 대체합니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { //create and initialize colorsList ArrayList colorsList = new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('White'); //call get () method to retrieve value at index 2 System.out.println('Entry at index 2 before call to set: ' + colorsList.get(2)); //replace the value at index 2 with new value colorsList.set(2,'Yellow'); //print the value at index 2 again System.out.println('Entry at index 2 after call to set: ' + colorsList.get(2)); } }
산출:
설정할 호출 전 인덱스 2 항목 : 파란색
설정 호출 후 인덱스 2의 항목 : 노란색
ArrayList 지우기
원기: 무효 클리어 ()
매개 변수 : 무
반환 값 : 빈
기술: 목록에서 모든 요소를 제거하여 목록을 지 웁니다.
ArrayList isEmpty
원기: 부울 isEmpty ()
매개 변수 : 무
반환 값 : true => 목록이 비어있는 경우
기술: 주어진 목록이 비어 있는지 확인합니다.
Clear () 및 isEmpty () 함수는 아래에 설명되어 있습니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { //create and initialize colorsList ArrayList colorsList = new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('White'); //print the ArrayList System.out.println('The ArrayList: ' + colorsList); //call clear() nethod on ArrayList colorsList.clear(); //check if ArrayList is empty using isEmpty() method System.out.println('Is ArrayList empty after clear ()? :' + colorsList.isEmpty()); } }
산출:
ArrayList : (빨간색, 녹색, 파란색, 흰색)
Clear () 후 ArrayList가 비어 있습니까? :진실
ArrayList indexOf
원기: int indexOf (객체 o)
매개 변수 : o => ArrayList에서 색인을 찾을 요소.
반환 값 : int => 목록에서 요소가 처음 나타나는 색인.
기술: 목록에서 요소 o가 처음 나타나는 색인을 반환합니다. o 요소가 목록에 없으면 -1입니다.
ArrayList lastIndexOf
원기: int lastIndexOf (객체 o)
매개 변수 : o => 검색 할 요소입니다.
반환 값 : int => 목록에서 요소의 마지막 발생 인덱스입니다.
기술: 목록에서 지정된 요소 o의 마지막 발생 색인을 리턴합니다. 요소가 목록에 없으면 -1입니다.
아래 Java 프로그램은 ArrayList의 indexOf 및 lastIndexOf 메소드를 보여줍니다.
import java.util.ArrayList; public class Main { public static void main(String() args) { //create and initialize intList ArrayList intList = new ArrayList(); intList.add(1); intList.add(1); intList.add(2); intList.add(3); intList.add(5); intList.add(3); intList.add(2); intList.add(1); intList.add(1); //print the ArrayList System.out.println('The ArrayList: ' + intList); //call indexOf() and lastIndexOf() methods to check the indices of specified elements System.out.println('indexOf(1) : ' + intList.indexOf(1)); System.out.println('lastIndexOf(1) : ' + intList.lastIndexOf(1)); System.out.println('indexOf(2) : ' + intList.indexOf(2)); System.out.println('lastIndexOf(2) : ' + intList.lastIndexOf(2)); System.out.println('indexOf(3) : ' + intList.indexOf(3)); System.out.println('lastIndexOf(3) : ' + intList.lastIndexOf(3)); System.out.println('indexOf(5) : ' + intList.indexOf(5)); System.out.println('lastIndexOf(5) : ' + intList.lastIndexOf(5)); } }
산출:
ArrayList : (1, 1, 2, 3, 5, 3, 2, 1, 1)
indexOf (1) : 0
lastIndexOf (1) : 8
indexOf (2) : 2
lastIndexOf (2) : 6
indexOf (3) : 3
lastIndexOf (3) : 5
indexOf (5) : 4
lastIndexOf (5) : 4
더빙 된 애니메이션을 볼 수있는 최고의 사이트
ArrayList toArray
원기: 객체 () toArray ()
매개 변수 : 무
반환 값 : 객체 () => 배열. 이 반환 된 배열에는 목록의 모든 요소가 적절한 순서로 포함됩니다.
기술: 주어진 목록을 배열로 변환합니다.
원기: T () toArray (T () a)
매개 변수 : a => 목록의 요소를 저장할 배열. 배열의 크기가 목록 요소에 충분하지 않으면 요소를 저장하기 위해 a와 동일한 유형의 다른 배열이 생성됩니다.
반환 값 : T () => 모든 목록 요소를 포함하는 배열.
기술: 주어진 목록을 a에 의해 주어진 유형의 배열로 변환합니다.
예외 : ArrayStoreException => 배열의 런타임 유형과 해당 요소의 런타임 유형 또는 상위 유형이 일치하지 않는 경우.
NullPointerException => 주어진 배열이 null입니다.
아래 Java 프로그램은 ArrayList의 toArray 메소드를 보여줍니다.
import java.util.*; public class Main { public static void main(String() args) { // define and initialize ArrayList ArrayList intList = new ArrayList(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); // print ArrayList System.out.println('ArrayList: ' + intList); //declare array Integer myArray() = new Integer(intList.size()); //use toArray method to convert ArrayList to Array myArray = intList.toArray(myArray); //print the Array System.out.println('Array from ArrayList:' + Arrays.toString(myArray)); } }
산출:
ArrayList : (10, 20, 30, 40, 50)
ArrayList의 배열 : (10, 20, 30, 40, 50)
ArrayList 클론
원기: 개체 복제 ()
매개 변수 : 무
반환 값 : Object => ArrayList 인스턴스의 복제.
기술: 지정된 ArrayList의 얕은 복사본을 만듭니다.
import java.util.ArrayList; public class Main { public static void main(String a()){ ArrayList fruitsList = new ArrayList(); //Adding elements to the ArrayList fruitsList.add('Apple'); fruitsList.add('Orange'); fruitsList.add('Melon'); fruitsList.add('Grapes'); System.out.println('Original ArrayList: '+fruitsList); ArrayList clone_list = (ArrayList)fruitsList.clone(); System.out.println('Cloned ArrayList: '+ clone_list); //add one elmeent & remove one element from original arraylist fruitsList.add('Mango'); fruitsList.remove('Orange'); //print original and cloned ArrayList again System.out.println('
Original ArrayList after add & remove:'+fruitsList); System.out.println('Cloned ArrayList after original changed:'+clone_list); } }
산출:
원래 ArrayList : (Apple, Orange, Melon, Grapes)
복제 된 ArrayList : (Apple, Orange, Melon, Grapes)
추가 및 제거 후 원본 ArrayList : (Apple, Melon, Grapes, Mango)
원본 변경 후 복제 된 ArrayList : (Apple, Orange, Melon, Grapes)
위의 프로그램 출력에서 복제 된 ArrayList가 원본 ArrayList의 얕은 복사본임을 알 수 있습니다. 즉, 원래 ArrayList가 변경 될 때 이러한 변경 사항은 각 요소의 메모리 위치를 공유하지 않기 때문에 복제 된 ArrayList에 반영되지 않습니다.
Array의 전체 복사본을 만들려면 원본 ArrayList를 순회하고 각 요소를 대상 ArrayList에 복사해야합니다.
ArrayList 하위 목록
원기: 목록 하위 목록 (int fromIndex, int toIndex)
매개 변수 : fromIndex => 범위의 시작 색인 (포함)
toIndex => 범위의 끝 인덱스 (배타적)
반환 값 : 목록 => 주어진 범위에있는 목록의 하위 목록.
기술: 주어진 범위, fromIndex에서 주어진 목록에 대한 색인 사이의 subList를 리턴합니다. 이 하위 목록 또는 지정된 범위의 목록보기는 목록에서 지원하는 모든 작업을 지원합니다. fromIndex = toIndex이면보기가 리턴되지 않습니다.
예외 : IndexOutOfBoundsException => toIndex가 범위를 벗어 났을 때 발생합니다.
IllegalArgumentException => fromIndex> toIndex 즉, 인덱스가 잘못된 경우.
subList 메서드의 예를 살펴 보겠습니다.
import java.util.ArrayList; import java.util.List; class Main{ public static void main(String a()){ //create and initialize the ArrayList ArrayList intList = new ArrayList(); intList.add(5); intList.add(10); intList.add(15); intList.add(20); intList.add(25); intList.add(30); intList.add(35); intList.add(40); intList.add(45); intList.add(50); //print the ArrayList System.out.println('Original ArrayList: '+intList); //create a sublist for the given ArrayList ArrayList sub_ArrayList = new ArrayList(intList.subList(2, 6)); //print the sublist System.out.println('Sublist of given ArrayList: '+sub_ArrayList); } }
산출:
원래 ArrayList : (5, 10, 15, 20, 25, 30, 35, 40, 45, 50)
주어진 ArrayList의 하위 목록 : (15, 20, 25, 30)
ArrayList preserveAll
원기: boolean preserveAll (콜렉션 c)
매개 변수 : c => 목록에 유지 될 요소가있는 컬렉션.
반환 값 : true => 작업의 결과로 ArrayList가 변경된 경우.
기술: 지정된 컬렉션의 요소와 일치하는 목록의 요소를 유지합니다. c.
예외 : ClassCastException => 컬렉션 유형과 목록 유형이 일치하지 않습니다.
NullPointerException => 주어진 컬렉션이 null이거나 목록에 null 요소가 포함되어 있고 컬렉션이 null을 허용하지 않습니다.
다음 프로그램은 preserveAll 메소드를 보여줍니다.
import java.util.*; class Main{ public static void main(String args()){ //create and initialize ArrayList ArrayList colorsList=new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('Yellow'); //print the ArrayList System.out.println('Original ArrayList:' + colorsList); //define another collection ArrayList color_collection=new ArrayList(); color_collection.add('Red'); color_collection.add('Blue'); System.out.println('Collection elements to be retained in the list:' + color_collection); //call retainAll method with above collection as an argument colorsList.retainAll(color_collection); //print the ArrayList after retainAll call. System.out.println('ArrayList after retainAll call:' + colorsList); } }
산출:
원래 ArrayList : (빨간색, 녹색, 파란색, 노란색)
목록에 유지 될 컬렉션 요소 : (빨간색, 파란색)
preserveAll 호출 후 ArrayList : (Red, Blue)
ArrayList 반복자
원기: 반복기 반복기 ()
매개 변수 : 무
반환 값 : Iterator => 목록 요소에 대한 반복자입니다.
기술: 적절한 순서로 목록 요소를 순회하는 반복기를 리턴합니다.
ArrayList listIterator
나는.
원기: ListIterator listIterator ()
매개 변수 : 무
반환 값 : ListIterator => 목록 요소에 대한 listIterator.
기술: 주어진 목록의 요소를 순회 할 목록 반복기를 반환합니다.
II.
원기: ListIterator listIterator (int 인덱스)
매개 변수 : index => listIterator에서 첫 번째 요소의 위치.
반환 값 : ListIterator => 지정된 인덱스의 목록에 대한 ListIterator.
기술: 지정된 목록의 요소를 순회하기 위해 지정된 위치 'index'에서 시작하는 목록 반복기를 반환합니다.
예외 : IndexOutOfBoundsException => 주어진 인덱스가 범위를 벗어났습니다.
iterator () 및 listIterator () 메서드의 예입니다.
import java.util.*; class Main{ public static void main(String args()){ //create ArrayList and initialize it ArrayList cities=new ArrayList(); cities.add('Mumbai'); cities.add('Pune'); cities.add('Hyderabad'); cities.add('Delhi'); //use iterator() method to traverse through the list System.out.println('List contents using Iterator () method:'); Iterator iter=cities.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } //use listIterator() method to traverse through the list System.out.println('
List contents using listIterator () method:'); ListIterator list_iter=cities.listIterator(); while(list_iter.hasNext()) { System.out.print(list_iter.next() + ' '); } } }
산출:
Iterator () 메서드를 사용하여 콘텐츠 나열 :
뭄바이 푸네 하이데라바드 델리
listIterator () 메서드를 사용하여 내용 나열 :
뭄바이 푸네 하이데라바드 델리
Java에서 ArrayList에 배열 추가
ArrayList는 컬렉션의 요소를 ArrayList에 추가하는 addAll 메서드를 지원합니다. 비슷한 방식으로 ArrayList에 Array를 추가 할 수도 있습니다. 이것은‘Collections.addAll’메소드를 사용하여 수행됩니다.
ArrayList에 배열을 추가하는 예입니다.
import java.util.*; class Main{ public static void main(String args()){ //create an ArrayList ArrayList city_List=new ArrayList(); //add elements to the ArrayList using add method city_List.add('Delhi'); city_List.add('Mumbai'); city_List.add('Chennai'); city_List.add('Kolkata'); //print ArrayList System.out.println('
Initial ArrayList :' + city_List); //define an array. String() myArray = new String(){'Cochin', 'Goa'}; //add the array to the ArrayList Collections.addAll(city_List,myArray); //print the ArrayList System.out.println('
ArrayList after adding array :' + city_List); } }
산출:
초기 ArrayList : (델리, 뭄바이, 첸나이, 콜카타)
배열 추가 후 ArrayList : (Delhi, Mumbai, Chennai, Kolkata, Cochin, Goa)
Java에서 ArrayList 정렬
ArrayList는 Collections.sort 메서드를 사용하여 요소를 정렬합니다. 기본적으로 목록은 Collections.sort 메서드에 의해 오름차순으로 정렬됩니다. ArrayList를 내림차순으로 정렬하려면 정렬 메서드에 매개 변수 'Collections.reverseOrder ()'를 제공해야합니다.
다음은 오름차순 및 내림차순으로 ArrayList를 정렬하는 프로그램입니다.
import java.util.*; public class Main { public static void main(String args()){ //Create and initialize an ArrayList ArrayList colorsList = new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('Yellow'); //print initial ArrayList System.out.println('Initial ArrayList:' + colorsList); //sort ArrayList in ascending order Collections.sort(colorsList); //print sorted ArrayList System.out.println('
ArrayList sorted in ascending order:'); System.out.println(colorsList); //sort ArrayList in reverse(desending) order Collections.sort(colorsList, Collections.reverseOrder()); //print sorted list System.out.println('
ArrayList sorted in descending order:'); System.out.println(colorsList); } }
산출:
초기 ArrayList : (빨간색, 녹색, 파란색, 노란색)
오름차순으로 정렬 된 ArrayList :
(파란색, 녹색, 빨간색, 노란색)
내림차순으로 정렬 된 ArrayList :
(노란색, 빨간색, 녹색, 파란색)
ArrayList에 다른 클래스 객체가 요소로 포함되어있는 경우 Comparable 및 Comparator 인터페이스를 사용할 수 있습니다. 인터페이스에 대한 자세한 내용은 이후 튜토리얼에서 다룰 것입니다.
Java에서 ArrayList 반전
Java에서 ArrayList를 반대로 할 수도 있습니다. 이를 수행하는 한 가지 방법은 ArrayList를 역순으로 순회하는 기존 방법을 사용하고 각 요소를 새 ArrayList에 복사하는 것입니다.
또 다른 방법은 컬렉션을 되 돌리는 데 사용되는 'reverse'메서드를 제공하는 Collections 클래스를 사용하는 것입니다.
Collections 클래스를 사용하여 ArrayList를 뒤집는 프로그램은 다음과 같습니다.
import java.io.*; import java.util.*; public class Main { public static void main(String() args) { // create and initialize an ArrayList ArrayList oddList = new ArrayList(); oddList.add(1); oddList.add(3); oddList.add(5); oddList.add(7); oddList.add(9); System.out.print('Initial ArrayList: ' + oddList); // use Collections.reverse method to reverse the ArrayList Collections.reverse(oddList); //print the ArrayList System.out.print('
Reversed ArrayList: ' + oddList); } }
산출:
초기 ArrayList : (1, 3, 5, 7, 9)
반전 된 ArrayList : (9, 7, 5, 3, 1)
Java의 ArrayList에서 중복 제거
ArrayList에서 중복을 제거하려면 반복기를 사용하여 ArrayList를 순회하고 요소의 첫 번째 항목 만 다른 ArrayList에 저장하는 기존 방법을 다시 한 번 사용할 수 있습니다.
배열 자바에 추가하는 방법
또 다른 방법은 스트림 () 클래스의 '고유 ()'방법을 사용하는 것입니다. 이 메서드는 고유 한 요소의 스트림을 반환합니다. 스트림 () 기능은 Java 8부터 Java에서 사용할 수 있습니다.
stream (). distinct () 메서드의 구현은 다음과 같습니다.
import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String() args) { // Create an ArrayList of numbers ArrayList numList = new ArrayList (Arrays.asList(1, 2, 3, 1, 3, 5, 5, 6, 6, 7, 7, 8, 8)); //print the original ArrayList System.out.println('Original ArrayList:' + numList); //Use Java 8 stream().distinct() method to remove duplicates from the list List distinctList = numList.stream().distinct().collect(Collectors.toList()); //print the new list System.out.println('ArrayList without duplicates:' + distinctList); } }
산출:
원래 ArrayList : (1, 2, 3, 1, 3, 5, 5, 6, 6, 7, 7, 8, 8)
중복이없는 ArrayList : (1, 2, 3, 5, 6, 7, 8)
자바에서 ArrayList 셔플 (무작위 화)
또한 ArrayList 요소를 '셔플'하거나 임의화할 수 있습니다. 이것은 Collections.shuffle () 메서드를 사용하여 수행됩니다. 이 방법을 사용하면 ArrayList를 기본 설정으로 섞거나 제공된 임의 값에 따라 요소를 임의 화하는 임의 () 함수를 제공 할 수 있습니다.
이를 달성하기위한 Java 프로그램은 다음과 같습니다.
import java.util.*; public class Main { public static void main(String() args) { //create and initialize a String ArrayList ArrayList strlist = new ArrayList(); strlist.add('east'); strlist.add('west'); strlist.add('north'); strlist.add('south'); strlist.add('southwest'); strlist.add('northeast'); //print the original list System.out.println('Original ArrayList :
' + strlist); //shuffle the ArrayList without random function Collections.shuffle(strlist); System.out.println('
Shuffled ArrayList without Random() :
' + strlist); // shuffle the ArrayList with random() function Collections.shuffle(strlist, new Random()); System.out.println('
Shuffled ArrayList with Random() :
' + strlist); // use random (2) to shuffle the ArrayList Collections.shuffle(strlist, new Random(2)); System.out.println('
Shuffled ArrayList with Random(2) :
' + strlist); } }
산출:
Original ArrayList : (동, 서, 북, 남, 남서, 북동) Random ()없이 Shuffled ArrayList : (북, 북동, 동, 남서, 남, 서)
Random ()을 사용하는 Shuffled ArrayList : (남, 동, 북, 북동, 서, 남서)
Random (2)을 사용하는 Shuffled ArrayList : (남서쪽, 남쪽, 동쪽, 북동쪽, 북쪽, 서쪽)
자주 묻는 질문
Q # 1) Java에서 동종 컨테이너와 이기종 컨테이너의 차이점은 무엇입니까?
대답: 동종 컨테이너에는 동일한 유형의 개체 / 요소가 포함됩니다. 반면에 이기종 컨테이너에는 혼합 유형의 개체가 있습니다.
질문 # 2) Java의 ArrayList는 이기종입니까?
대답: 예. ArrayList는 제네릭을 지원하므로 형식 삭제를 지원하므로 제네릭 ArrayList로 구현 될 때 혼합 된 개체를 포함 할 수 있습니다.
질문 # 3) ArrayList는 int를 저장할 수 있습니까?
대답: 아니요. ArrayLists는 int와 같은 값을 저장할 수 없지만 ArrayLists는 개체 만 포함 할 수 있으므로 Integer 개체를 저장할 수 있습니다. 따라서 기본 유형을 저장하려면 Integer for int와 같은 래퍼 클래스를 사용해야합니다.
질문 # 4) ArrayList가 가득 차면 어떻게됩니까?
대답: 모든 ArrayList 객체에는 'capacity'라는 기능이 있습니다. ArrayList가 가득 차면 더 많은 요소를위한 공간을 만들기 위해 ArrayList의 용량이 자동으로 증가합니다.
질문 # 5) ArrayList의 removeAll 및 retainAll 메서드의 차이점은 무엇입니까?
대답: ArrayList 메서드 'removeAll'및 'retainAll'은 반대 동작을 나타냅니다.
removeAll 메서드는이 메서드에 인수로 전달 된 컬렉션과 일치하는 목록에서 모든 요소를 제거하는 반면, preserveAll은 컬렉션과 일치하는 목록의 모든 요소를 유지합니다.
결론
이 자습서에서는 예제를 통해 ArrayList 메서드에 대해 자세히 설명했습니다.
또한 목록 맨 앞에 요소를 추가하는 것과 같은 몇 가지 특별한 경우를 고려했습니다. 또한 ArrayList의 정렬, 반전 및 셔플 링과 같은 ArrayList의 다른 작업에 대해서도 논의했습니다.
다음 자습서에서는 ArrayList 변환 중 일부에 대해 설명합니다.