-
Java - CollectionJava 2018. 1. 25. 10:42반응형< Collection >// 같은 Interface라 메소드는 비슷하다.< Array List >// Array List는 index로 객체를 관리한다는 점에서 Array와 유사하다// 차이점은 Array와 달리 index가 유연하다는 점이다// Array List는 객체 삭제/추가 시 inedx가 1씩 당겨지거나 미뤄지게 된다// 때문에 빈번한 객체의 추가, 삭제가 일어날 때 다소 무리가 된다.// Collection Framework에서 가장 많이 쓰인다.// ArrayList<Type> 사용, Generic 가능// 선언시 크기 지정을 할 수 있지만 안해도 상관없다.ex) ArrayList<String> list = new ArrayList<String>(3); // 크기 지정ArrayList<String> list = new ArrayList<>(); // 다이아몬드 연산자 사용 가능< ArrayList >import java.util.ArrayList;public class ArrayList01 {public static void main(String[] args) {// Array List는 Array와 모양은 같다.// 하지만 크기가 제한이 없다. 유연성이 좋다.// 선언시 크기 지정을 할 수 있지만 안해도 상관없다.ArrayList<String> list = new ArrayList<String>(3); // ArrayList<Type> 사용, Generic 가능list.add("Collection");list.add("Thread");list.add("Network");list.add(3, "Lambda"); // 1번 index에 element 삽입. 기존에 있던 1번 인덱스는 뒤로 밀림list.add(2, "Java IO");// list.add(9, "예외"); // 배열같으면 Exception 발생// 리스트의 크기System.out.println(list.size());// 리스트의 측정 값 가져오기System.out.println(list.get(0));// for문 이용for(int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println();// 삭제list.remove("Collection"); // 특정 값을 삭제, boolean type으로 반환list.remove(2); // 특정 index번에 들어 있는 값 삭제// for(int i = 0; i < list.size(); i++) {// System.out.println(list.get(i));// }for(String s : list) {System.out.println(s);}}}// ArrayList와 Vector의 차이는 ArrayList는 다수 사용자를 허용하지만// Vector는 허용하지 않는다.// Array -> List로 변환import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArrayList02 {public static void main(String[] args) {// Array -> List로 변환String[] arr = {"Arraylist", "vector", "linkedlist"}; // 값들은 List를 공통적으로 구현받는 것들List<String> list = Arrays.asList(arr);// 조회는 할 수 있으나, 데이터 변경은 불가능하다.System.out.println(list.size());System.out.println(list.get(0));// 변경까지 하려면 list를 ArrayList로 변경해야 한다.ArrayList<String> arrList = new ArrayList<String>();arrList.addAll(list); // list값을 전부 집어넣는다.System.out.println(arrList.size());arrList.add("Index 3");for(String s : arrList) {System.out.println(s);}}}// 데이터 수정, 초기화, 검색import java.util.ArrayList;public class ArrayList03 {public static void main(String[] args) {// 데이터 수정, 초기화, 검색ArrayList<Integer> score = new ArrayList<Integer>();score.add(70);score.add(80);score.add(50);score.add(90);score.add(100);score.add(90);// 수정(set)score.set(3, 95); // 3번 index를 95로 수정// 검색(contains, indexOf)// contains() : 특정 값을 담고 있는지 유무System.out.println(score.contains(90));// IndexOf : 특정 값이 어딨는지 찾아줌 (1번)System.out.println(score.indexOf(50));// 초기화(비우기)System.out.println(score.isEmpty()); // 비어 있는지? - bool반환score.clear(); // 다 비우기System.out.println(score.isEmpty());}}< Linked List >// LinkedList와 ArrayList는 이용방법은 같다.// LinkedList는 좌우 데이터의 주소를 기억하는 구조를 갖는다.// 그래서 삽입/삭제가 용이하다. 속도가 빠르다import java.util.ArrayList;import java.util.LinkedList;public class BenchMark {public static void main(String[] args) {// 1. ArrayList와 LinkedList 객체 준비ArrayList<Integer> arrList = new ArrayList<Integer>();LinkedList<Integer> lnkList = new LinkedList<Integer>();// < ArrayList >// 2. 두 객체에 값을 채워 준다.for(int i = 1; i <= 300000; i++) {arrList.add(i);lnkList.add(i);}// 3. 현재 시간 체크long start = 0;long end = 0;long result = 0;start = System.currentTimeMillis(); // 1/1000초 = 0.001초// 4. 데이터 추가(중간 부분)for(int i = 1; i < 100000; i++) {arrList.add(30, 560);}// 5. 데이터 추가 끝// 6. 현재시간2 체크end = System.currentTimeMillis();// 7. 현재 시간2 - 현재시간1 = 걸린시간result = end - start;System.out.println(result);// < LinkedList >start = System.currentTimeMillis();for(int i = 1; i < 100000; i++) {lnkList.add(30, 560);}end = System.currentTimeMillis();result = end - start;System.out.println(result);}}< Set Collection >// Set Collection은 순서가 유지 되지 않는다. 순서가 없다. - index 지정X// 중복을 허용 하지 않는 특성이 있다. - 중복되면 들어가지 않는다.(에러X)// Set에는 수정이 없어서 값을 지우고 다시 넣는 작업을 해야한다.// 검색 기능이 없는 대신에 하나씩 꺼낼 수 있는 Iterator를 제공.// HashSet 역시 최상위는 Collection Interface이기때문에 기본적인 method는 같다.import java.util.HashSet;import java.util.Set;public class SetUse {public static void main(String[] args) {// set 선언 방법HashSet<String> set = new HashSet<String>();Set<Member> member = new HashSet<Member>(); // 다형성// set 데이터 추가set.add("Java");set.add("Oracle");set.add("Front");set.add("JSP");set.add("MVC");set.add("Java"); // 중복, 에러x, 값이 들어가지않는다member.add(new Member()); // 객체는 복사본이기 때문에 중복Xmember.add(new Member());member.add(new Member());System.out.println(set.size());System.out.println(member.size());// set 덩어리에서 Iterator 형태로 변경하고 하나씩 빼오기// Iterator 형태가 되면 하나씩 쪼개진다.Iterator<String> iter = set.iterator(); // Iterator로 받는다.while(iter.hasNext()) { // hasNext()는 다음 값이 없으면 false를 반환한다. 순서가 없기때문에 while 사용String item = iter.next(); // 다음 값들을 반환한다.System.out.println(item);}for(String item : set) { // 향상된 for문으로 다 뽑아낼수도 있지만// while문을 사용하면 하나씩 확인 할 수 있다.System.out.println(item);}// 특정 요소 삭제set.remove("Java");// 비었는지 확인 해서 비우기if(set.isEmpty()) {System.out.println(set.size());}else {set.clear();System.out.println(set.size());}}}class Member{}반응형
'Java' 카테고리의 다른 글
Java - Stack, Queue (0) 2018.01.25 Java - Map (0) 2018.01.25 Java - Generic Method (0) 2018.01.24 Java - Generic (0) 2018.01.24 Java - StringBuffer & StringBuilder (0) 2018.01.23 댓글