package kr.or.ddit.basic;
import java.util.ArrayList;
public class ListTest {
public static void main(String[] args) {
//ArrayList 는 기본적인 사용법이 Vector 와 같다.
ArrayList list1 = new ArrayList<>();
//add() 메서드를 이용해서 데이터를 추가한다.
list1.add("aaa");
list1.add("bbb");
list1.add(123);
list1.add('k');
list1.add(false);
list1.add(123.45);
System.out.println("list 의 size : " + list1.size());
System.out.println("list1 : " + list1);
//get() 메서드로 데이터를 꺼내온다.
System.out.println("1번째 자료 : " + list1.get(1));
System.out.println();
//데이터 끼워넣기 끼워넣기는 그냥 값을 넣는거니까 형변환이 필요없는 부분이겠지?
list1.add(3, "zzzz");
System.out.println("lest1 : " + list1);
System.out.println();
// 데이터 변경하기
원래 lest1 데이터 : [aaa, bbb, 123, zzzz, k, false, 123.45]
* String temp = (String)list1.set(3, "xxxx"); 만약 ArrayList<String> k = new ArrayList<>();
이런식으로 선언을 해놓은 상태라면 -> 형변환을 할 필요도 없고 그리고 같은 타입만 ( String 타입 ) 넣어야 했겠지?
System.out.println("temp : " + temp); temp 은 3번 index 가 xxxx로 변환되고 그 전 데이 터인 zzzz가 출력이 된다.
System.out.println("listg1 : " + list1);
출력문 : listg1 : [aaa, bbb, 123, xxxx, k, false, 123.45]
//삭제
list1.remove(3);
System.out.println("삭제 후 list : " + list1);
출력문 : 삭제 후 list : [aaa, bbb, 123, k, false, 123.45]
//삭제의 다른 방법
list1.remove("bbb");
System.out.println(" 삭제후 list1 : " + list1);
출력문 : 삭제후 list1 : [aaa, 123, k, false, 123.45]
//제네릭을 사용할 수 있다.
ArrayList<String> list2 = new ArrayList<>();
list2.add("AAAA");
list2.add("BBBB");
list2.add("CCCC");
list2.add("DDDD");
list2.add("EEEE");
for(int i = 0 ; i < list2.size() ; i++ ) {
System.out.println( i + " ==> " + list2.get(i));
}
출력문 :
0 ==> AAAA
1 ==> BBBB
2 ==> CCCC
3 ==> DDDD
4 ==> EEEE
다른 형식의 for 문
for ( String str : list2) { // 변수 str에 list2 에 들어있는 모든 값을 넣어줄때까지 반복
System.out.println(str);
}
System.out.println("----------------------------------");
출력문 :
AAAA
BBBB
CCCC
DDDD
EEEEE
// contains( 비교객체) == 리스트에 '비교객체'가 있으면 true, 없으면 false 를 반환
System.out.println("DDD값 : " + list2.contains("DDDD"));
System.out.println("ZZZ값 : " + list2.contains("ZZZZ"));
//indexOf(비교객체)
==> 리스트에 '비교객체' 가 있으면 '비교객체' 가 있는 위치의 index 값이 반환된다.
없으면 -1 을 반환한다.
System.out.println("DDDD 의 위치값 : " + list2.indexOf("DDDD"));
System.out.println("ZZZZ의 위치값 : " + list2.indexOf("ZZZZ") ) ;
출력값 :
DDDD의 위치값 : 3
ZZZZ의 위치값 : -1
toArray()
리스트 안의 데이터를 배열로 반환하여 반환한다.
기본적으로 Object 형 배열로 반환한다.
Object[] strArr = lies2.toArray();
String[] strArr = list2.toArray();
컴파일 에러 : toArray () 는 기본적으로 Object 형 배열로 만든다.
만약 String 타입으로 만들어 주고 싶으면
toArray(new 제네릭타입[0]) ==> 제네릭 타입의 배열로 변환이 된다.
String[] ttt = new String[0];
String[] strArr2 = list2.toArray(new String[0]); //0개 짜리
for(String str : strArr2) {
System.out.println(str);
}
System.out.println("배열의 개수 : " + strArr.length);
for(int i = 0 ; i < strArr.length ; i++) {
System.out.println(i + "번째 자료 : " + strArr[i]);
}
* String [] ttt = new String[5];
ttt = new String[100] ;
* 이렇게 되면 5개짜리변수가 아니라 100개 짜리 변수로 변한다.
* String [] ttt = new String[0];
* String[] strArr5 = lest2.toArray(ttt);
* 이렇게 나눠서 쓰나
*
* list2.toArray(new String[0])
* 이거나 동일한게 된다는 뜻
* 0은 의미가 없는게 그냥 파라미터의 형식이기 때문에
//charAt() : 특정한 인덱스에 위치한 문자를 반환한다.
}
}
댓글
댓글 쓰기