java #25 List(ArrayList, Vector)
- 관련 Post
2015/01/17 - [프로그래밍/Java] - java #23 JCF (Java Collection Framework), List, Map, Set
2015/01/17 - [프로그래밍/Java] - java #24 Set
2015/01/17 - [프로그래밍/Java] - java #26 Map
* List(ArrayList, Vector)
ArrayList | Vector | |
동기화 | x | 0 |
동시접근 | multi thread에서 동시접근 가능 | 불가 |
속도 | 빠름 | 느림 |
1. ArrayList
- jdk1.4까지는 객체를 저장
- 1.5부터 generic을 지원하여 특정객체만 저장할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | * 객체 생성 List l = new Arraylist(); * jdk1.5+ List<E> l=new ArrayList<E>(); generic generic <데이터형> <데이터형>(<>다이아몬드연산자라고 한다.) List<String> l = new ArrayList<String>(); 1.7에서는 <>로 생략가능 - 추가 l. add(값); - 크기 l.size() -> int로 - 값얻기 l.get(인덱스) - 내용삭제 l.remove(인덱스) - 모든 방을 삭제 l.clear(); | cs |
- 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | package day0303; import java.util.List; import java.util.ArrayList; /** * 일차원 배열처럼 생성되고, 입력하는 값에 따라 방이 증가하고, * 삭제하는 값에 따라 방의 갯수가 감소하는 List의 사용. * */ public class UseList { public void useArrayList() { // generic을 사용하지 않는 경우 : // jdk1.4에서는 객체만 입력받고, jdk1.5부터는 모든 값을 저장할 수 있다. List al = new ArrayList(); /* JDK1.4에서는 기본형 데이터형을 추가할 수 없다. 기본형을 추가하려면 기본형을 객체로 감쌋서 사용하는 wrapper class를 이용하여 처리함 wrapper class는 기본형 데이터형과 같은 이름의 클래스를 말한다. al.add(new Integer(10)); al.add(new Double(3.14)); */ al.add(10);/* jdk1.4-error, jdk1.5에서는 compiler가 자동으로 wrapper class를 이용하여 감싸는 코드를 넣어준다.(autoboxing) */ al.add("안녕하세요"); System.out.println("크기" + al.size() + " / " + al); for (int i = 0; i < al.size(); i++) { // autoboxing된 값이 있다면 원래대로 변환해서 꺼내오는 unboxing이 발생한다. System.out.println(al.get(i)); }// end for // 삭제 al.remove(1);// 뒷방의 값이 앞으로 이동하고 전체크기가 변경된다. System.out.println("삭제후 크기" + al.size() + " / " + al); al.clear(); System.out.println("clear 후 크기" + al.size() + " / " + al); // /////Generic 사용 : 입력되는 형의 제한//////// // 동기화가 되지 않기 때문에 동시에 여러명이 접근할 수 있다. List<String> list = new ArrayList<String>(); // List<String> list1 = new ArrayList<>();//JDK1.7부터 뒤쪽 generic을 <>로 생략 // 가능 // 추가 : Generic으로 선언한 데이터형만 추가됨. list.add("오늘은"); list.add("월요일"); list.add("입니다."); // list.add(3); //generic으로 선언된 문자열형 이외에는 error System.out.println("크기 : " + list.size() + " / " + list); list.add("3월의 첫주"); System.out.println("크기 : " + list.size() + " / " + list); /* * 기존의 for for(int i = 0;i<list.size();i++){ * System.out.println(list.get(i)); }//end for */ // 개선된 for for (String msg : list) { System.out.println(msg); }// end for // 배열로 복사 : Generic이 정의되어있을 때만 // 리스트에 크기대로 배열을 생성하고 String[] msg = new String[list.size()]; // 생성된 배열에 리스트의 값을 넣어준다. list.toArray(msg); // 삭제 // 인덱스로 삭제 list.remove(1); System.out.println("인덱스로 1방 삭제 후 " + list); // 방의 내용으로 삭제 list.remove("입니다."); System.out.println("방의 내용으로 삭제 후" + list); // 모든방의 삭제 list.clear(); System.out.println("모든 방 삭제후" + list); System.out.println("----배열방의 값 출력----"); for (String data : msg) { System.out.println(data); } }// useArrayList public static void main(String[] args) { UseList ul = new UseList(); ul.useArrayList(); } } |
2. Vector
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package day0303; import java.util.Vector; public void useVector() { // 생성 jdk1.4 // List list=new Vector<>(); // list.add(new integer(11)); // 동기화가 되어서 동시에 여러 사용자가 방 하나에 접근할 수 없다. List<String> list = new Vector<String>(); // 값 추가 list.add("사과"); list.add("딸기"); list.add("배"); list.add("포도"); System.out.println("값 추가" + list); // 중복값 저장 가능 list.add("사과"); System.out.println("값 추가" + list); System.out.println(); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); // end for }// for // 값 삭제 : 인덱스로 삭제, 내용으로 삭제 // 내용으로 삭제될 때에는 중복값이 있다면 처음 등장하는 값만 삭제한다. list.remove("사과"); System.out.println("삭제 후" + list); }// useVector public static void main(String[] args) { UseList ul = new UseList(); ul.useVector(); } } |
'컴퓨터 관련 > JAVA 강의' 카테고리의 다른 글
java #27 Exception Handling, 예외처리 (0) | 2016.12.18 |
---|---|
java #26 Map (0) | 2016.12.18 |
java #24 Set (0) | 2016.12.18 |
java #23 JCF (Java Collection Framework), List, Map, Set (0) | 2016.12.18 |
java #22 꼭 알아야 할 클래스와 메소드-3- (수학, 난수 관련) (0) | 2016.12.18 |