Test160~Test168
List → Vector, ArrayList, ...
ArrayList 와 Vector 클래스는 List 를 크기 변경이 가능한 배열로 구현한 것으로
차이점은 Vector 클래스의 객체는 기본적으로 동기화 되지만, ArrayList 는 그렇지 않다는 점이다.
비동기화 컬렉션은 동기화된 컬렉션보다 더 나은 성능을 제공하며 스레드들이 컬렉션을 공유하지 않는 프로그램에서는 일반적으로 ArrayList 를 Vector 보다 더 선호하며, ArrayList 는 동기화를 고려하지 않는 Vector 처럼 동작함으로써 스레드 동기화에 따르는 부담을 가지지 않기 때문에 Vector 보다 더 빠르게 실행된다.
null을 포함한 모든 요소를 허용하며 List 인터페이스를 구현하는 것 외에 리스트에 격납하기 위해 내부적으로 사용되는 배열의 사이즈를 조작하는 메소드를 제공한다.
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Test161
{
public static void main(String[] args)
{
// ArrayList 자료구조 인스턴스 생성
//ArrayList<String> list = new ArrayList<String>();
//Vector<String> list = new Vector<String>();
//List<String> list = new Vector<String>();
List<String> list1 = new ArrayList<String>();
// list1 에 요소 추가 -> add()
list1.add("나이브스아웃");
list1.add("인셉션");
list1.add("인터스텔라");
// ArrayList 자료구조 인스턴스 생성
List<String> list2 = new ArrayList<String>(list1);
// list2 에 요소 추가
list2.add("모가디슈");
// ArrayList 자료구조 인스턴스 생성
List<String> list3 = new ArrayList<String>();
// list3 에 list2 의 전체 요소 추가 -> addAll();
list3.addAll(list2);
// "인셉션 dkvdp "분노의질주" 추가
// ① "인셉션 찾기 -> indexOf() -> 위치값 인덱스 반환
int n = list3.indexOf("인셉션");
//System.out.println("인셉션 위치 : " + n);
//--==>> 인셉션 위치 : 1
// ② "인셉션" 찾은 인덱스 위치에 "분노의질주" 투입(삽입)
list3.add(n,"분노의질주"); //그냥 add하면 뒤에 붙는데 index값 add는 index값에 붙음
//--==>> [나이브스아웃, 분노의질주, 인셉션, 인터스텔라, 모가디슈]
// 출력 -> 더미 데이터 확인
System.out.println("============================================================");
System.out.println(list1);
//--==>> [나이브스아웃, 인셉션, 인터스텔라]
System.out.println(list2);
//--==>> [나이브스아웃, 인셉션, 인터스텔라, 모가디슈]
System.out.println(list3);
//--==>> [나이브스아웃, 인셉션, 인터스텔라, 모가디슈]
System.out.println();
// 출력 → listIterator() 메소드를 활용하여 출력
System.out.println("============================================================");
list3.listIterator();
ListIterator<String> li = list3.listIterator();
while (li.hasNext())
{
System.out.print(li.next() + " ");
}
System.out.println();
//--==>> 나이브스아웃 분노의질주 인셉션 인터스텔라 모가디슈 // 얘는 더미를 찍은 것과는 다름!
System.out.println();
// 출력 -> 역순으로 출력 .hasPrevious()
System.out.println("============================================================");
while (li.hasPrevious())
{
System.out.print(li.previous() + " ");
}
System.out.println();
//--==>> 모가디슈 인터스텔라 인셉션 분노의질주 나이브스아웃
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.ListIterator;
public class Test162
{
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("서울");
list.add("부산");
list.add("인천");
list.add("대구");
list.add("광주");
list.add("대전");
list.add("울산");
list.add("세종");
// 더미 체크
System.out.println(list);
//--==>> [서울, 부산, 인천, 대구, 광주, 대전, 울산, 세종]
System.out.println("전체 갯수 : " + list.size());
//--==>> 전체 갯수 : 8
//첫 번째 요소만 출력
System.out.println("첫 번째 요소 : " + list.get(0));
//--==>> 첫 번째 요소 : 서울
// 마지막 요소만 출력
System.out.println("마지막 요소 : " + list.get(list.size()-1)); //--check~!!
//--==>> 마지막 요소 : 세종
// 처음 위치에 "목포" 추가
list.add(0, "목포");
//더미 체크
System.out.println(list);
//--==>> [목포, 서울, 부산, 인천, 대구, 광주, 대전, 울산, 세종]
// 처음 위치의 데이터(요소)를 "대한민국"으로 변경 -> 덮어쓰기
list.set(0,"대한민국");
//더미 체크
System.out.println(list);
//--==>> [대한민국, 서울, 부산, 인천, 대구, 광주, 대전, 울산, 세종]
// "서울" 존재여부 확인
if (list.contains("서울"))
System.out.println("서울이 존재합니다.");
//--==>> 서울이 존재합니다.
// "대한민국" 지우기
//list.remove("대한민국"); //--(O)
list.remove(0); //--(O) //--check~!!
//더미 체크
System.out.println(list);
//--==>> [서울, 부산, 인천, 대구, 광주, 대전, 울산, 세종]
//ArrayList 자료구조 list 의 전체 요소 출력
System.out.println("전체 출력...①");
for (int idx=0; idx<list.size();idx++)
{
System.out.print(list.get(idx) + " ");
}
System.out.println();
//--==>> 전체 출력...①
// 서울 부산 인천 대구 광주 대전 울산 세종
System.out.println("역순 출력...②");
for (int idx=list.size()-1; idx>=0; idx--) //--check~!!
{
System.out.print(list.get(idx) + " ");
}
System.out.println();
//--==>> 역순 출력...②
// 세종 울산 대전 광주 대구 인천 부산 서울
System.out.println("전체 출력...③"); //for-each 구문사용
for (String s : list )
{
System.out.print(s + " ");
}
System.out.println();
//--==>> 전체 출력...③
// 서울 부산 인천 대구 광주 대전 울산 세종
System.out.println("전체 출력...④");
Iterator<String> it = list.iterator();
while (it.hasNext())
{
String s = it.next();
System.out.print(s + " ");
}
System.out.println();
//--==>> 전체 출력...④
// 서울 부산 인천 대구 광주 대전 울산 세종
System.out.println("전체 출력...⑤");
ListIterator<String> li = list.listIterator();
while (li.hasNext())
{
System.out.print(li.next() + " ");
}
System.out.println();
//--==>> 전체 출력...⑤
// 서울 부산 인천 대구 광주 대전 울산 세종
System.out.println("역순 출력...⑥");
while (li.hasPrevious())
{
String s = li.previous();
System.out.print(s+ " ");
}
System.out.println();
//--==>> 역순 출력...⑥
// 세종 울산 대전 광주 대구 인천 부산 서울
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class Test163
{
public static void main(String[] args)
{
List<String> mList = new ArrayList<String>();
mList.add("1");
mList.add("2");
mList.add("3");
// List -> String[]
String[] sArrays = mList.toArray(new String[mList.size()]); //스트링배열의 형태로 리스트를 배열로 변경
for (String s:sArrays)
{
System.out.print(s +" ");
}
System.out.println();
//--==>> 1 2 3
// String[] -> list
List<String> mNewList = Arrays.asList(sArrays);
// ※ 『Arrays.asList()』의 반환 자료형 List이기 때문에
for (String s : mNewList)
{
System.out.print(s + " ");
}
System.out.println();
//--==>> 1 2 3
}
}