- Java-collections framework ArrayList의 활용 목차
Collections framework
->배열이 갖고 있는 불편함을 벗게 해주는 도구이다.
컬렉션 프레임워크란 데이터를 저장하는 클래스들을 표준화한 설계이다.
컬렉션 프레임워크는 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다.
ArrayList
->java.util패키지안에 포함되어있다.
->import java.util.ArrayList
ArrayList 데이터 추가하기 - Add 메소드
ArrayList에 데이터를 추가하는 방법은 add 메소드를 활용하는 방법입니다. add 메소드를 사용하는 방식은 두 가지로 인자 정보를 하나만 넘기는 경우와 두 개를 넘기는 방법이 있습니다.
boolean add(E e)
void add(int index, E element)
첫 번째 방식은 Element 값만 넘기는 방식입니다. 이때는 List의 맨 마지막 위치에 데이터가 들어갑니다. 두 번째 방식은 추가할 Element 값과 데이터가 들어갈 특정 위치를 지정할 수 있습니다.
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(0);
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
for(int i : arrayList)
{
System.out.println("값 : " + i );
}
}
}
▼ 데이터 추가는 ArrayList의 add 메소드를 통해 추가할 수 있습니다. 따로 위치를 지정하지 않았으므로 데이터는 순서대로 0, 1, 2, 3, 4가 List에 들어가게 됩니다.
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(0);
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(1,10);
for(int i : arrayList)
{
System.out.println("값 : " + i );
}
}
}
▼ 위 예제에서 15번 라인이 추가되었습니다. 마찬가지로 add 메소드를 사용하였는데 인자로 index를 추가로 넘기고 있습니다. ArrayList에서 index 1에 해당하는 위치에 데이터 10을 넣으라는 의미로 해석할 수 있습니다. 뒤에 Element 들은 자동으로 뒤로 밀리게 됩니다.
ArrayList 데이터 추가하기 - addAll 메소드
addAll 메소드를 통해 ArrayList에 ArrayList를 추가할 수 있습니다. 메소드를 사용하는 방식은 add 메소드와 마찬가지로 두 가지가 있으며 인자 정보를 하나만 넘기는 경우와 두 개를 넘기는 경우가 있습니다.
boolean addAll(Collection<? extends E> c)
boolean addAll(int index, Collection<? extends E> c)
▼ arrayList를 arrayList와 arrayList2 두 개를 생성하였고 add 메소드를 통해 데이터를 넣었습니다.그런 다음 18 Line에서 addAll 메소드를 통해 arrayList에 arrayList2에 있는 데이터를 추가해주는 예제입니다.
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
ArrayList<Integer> arrayList = new ArrayList<>();
ArrayList<Integer> arrayList2 = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList2.add(10);
arrayList2.add(30);
arrayList2.add(20);
arrayList.addAll(arrayList2);
for(int i : arrayList)
{
System.out.println(i);
}
}
}
ArrayList 데이터 제거하기
ArrayList에서 특정 데이터를 제거할 수 있습니다.
boolean remove(int index)
remove 메소드를 통해 특정 index의 element를 제거할 수 있습니다.
▼ 16 Line에서 remove 메소드를 통해 index 1에 해당하는 element를 제거하는 예제입니다. 중간에 element가 제거되면 ArrayList는 자동으로 size가 조절됩니다.
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
ArrayList<Integer> arrayList = new ArrayList<>();
ArrayList<Integer> arrayList2 = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(5);
arrayList.remove(1);
}
}
ArrayList로부터 특정 데이터 가져오기
E get(int index)
List<E> subLit(int fromIndex, int toIndex)
첫 번째 get 메소드를 통해 element 하나를 가지고 오는 방식이 있습니다. 두 번째로 index 범위를 지정하여 List로 가지고 오는 방식이 있습니다.
▼ 15 Line에서 arrayList로부터 index 범위 1~3에 해당하는 element들을 List 형태로 반환받아서 출력하는 예제입니다. 주의할 것은 index 범위가 1~3까지 지정이 되었지만 toIndex 앞까지에 해당하는 element까지만 반환한다는 것입니다.
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);
arrayList.add(5);
List<Integer> list = arrayList.subList(1,3);
for(int i : arrayList)
{
System.out.println("arrayList : " + i);
}
System.out.println("------------------------");
for(int i : list)
{
System.out.println("subList 메소드로 가져온 List : " + i);
}
}
}
※ Check !
위의 사진처럼 " add() "라는 메소드는 어떠한 형태의 데이터타입도 수용할 수 있는 메소드이다.
이것이 가능하기 위해서는 add()라는 메소드는 인자 즉, "one"의 데이터 타입이 object 형 이어야한다.
즉,ArrayList()내부에 저장될때 object형으로 저장되어있다는 것 !!
따라서 , String value =al get(i) i가 0일때 "one"이라는 값을 가져와야하는데 "one"은 object type으로 저장되어 있고 저장하려는 변수(value) 의 타입은 String type이기 때문에 al get(i)는 String으로 (사진처럼) 형변환이 필요로하다.
ArrayList()를 사용하고 , add시킨 값을 가져올 때 그 값을 원래의 값으로 가져오고 싶다면 무조건 형변환을 해야한다.!!
위에 그림처럼 get(i)로 값을 뽑아낼때 (String) 즉, 형변환을 하지 않으면 오류가 발생되어 출력이 되지 않는다 .
위 사진 상황 해결 방법
처음 ArrayList를 정의할때, 제네릭을 통해 입력되는 데이터의 타입을 명시해주면된다.
출처:lktprogrammer,생활코딩
'Java' 카테고리의 다른 글
Java-iterator란? (0) | 2019.10.26 |
---|---|
Java-List와 Hash의 차이점 (0) | 2019.10.26 |
Java-제네릭 (0) | 2019.10.26 |
JAVA- toString() (0) | 2019.09.28 |
JAVA - Object (0) | 2019.09.28 |