2020.10.21 고급자바 수업 내용 정리

 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() : 특정한 인덱스에 위치한 문자를 반환한다. 

}

}

 

댓글