-
List / ArrayList / LinkedList / Set프로그래밍/JAVA 자바 2021. 8. 1.반응형
package ex0730; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class Ex01_List { public static void main(String[] args) { /* * ArrayList * 1. 추가와 삭제가 빈번한 경우 성능 저하 * 2. 검색시 속도가 빠름 * 3. 동기화 되지 않음(멀티 스레드에서 안전 X ) * =============================================== * LinkedList * 1. 추가와 삭제가 빈번한 경우 ArrayList보다 속도가 빠름 * 2. 검색은 느림 * 3. 동기화 되지 않음(멀티 스레드에서 안전 X ) */ List<String> list1 = new ArrayList<String>(); list1.add("java"); list1.add("오라클"); list1.add("서블릿"); System.out.println("ArryList"); print(list1); List<String> list2 = new LinkedList<String>(); list2.add("서울"); list2.add("부산"); list2.add("대구"); System.out.println("LinkedList"); print(list2); } public static void print(List<String> list) { //위에 2개의 리스트를 메소드 하나가지고 출력하기 위해서 위에서 업 캐스팅을 해준다. for(String s : list) { System.out.println(s + " "); } System.out.println(); } }
Set
package ex0730; import java.util.HashSet; import java.util.Set; /* * Set * 순서를 유지하지 않음 * 중복을 허용하지 않음 * null은 하나만 등록 가능 * ===================== * 구현 클래스 = HashSet, LinkedHashSet, TreeSet * ===================== * HashSet * Set 인터페이스 구현 클래스 * 순서를 유지하지 않음 * 중복을 허용하지 않음 * ===================== * LinkedHashSet * HashSet 하위 클래스 * 중복 허용하지 않음 * 순서 유지 * ===================== * TreeSet * SortedSet 인터페이스 구현 * 정렬된 순서에 의해서 반복 * 중복 허용 안함 * Comparable 인터페이스 구현 클래스만 추가 가능 * */ public class Ex03_Set { public static void main(String[] args) { //순서 유지 안됨, 중복 안됨 - HashSet Set<String> set = new HashSet<String>(); set.add("서울"); set.add("부산"); set.add("대구"); set.add("인천"); set.add("광주"); set.add("서울"); // 이전 서울 값을 덮어쓴다.(중복을 허용하지 않으니까) set.add("대전"); set.add("울산"); set.add("세종"); System.out.println(set); System.out.println("전체 출력"); for(String s : set) { System.out.print(s+" "); } System.out.println(); } }
Set의 종류
HastSet - 순서 유지 안되고 중복 불가
LinkedHashSet - 순서 유지는 가능 중복 불가
TreeSet - 값들을 정렬함 중복 불가
Set을 활용해서 로또 프로그램 만들기
package ex0730; import java.util.Random; import java.util.Set; import java.util.TreeSet; public class Ex06_Lotto { public static void main(String[] args) { // Set을 이용해서 로또 프로그램 만들기 // 1~45사이의 난수 6개 출력 Set<Integer> set = new TreeSet<Integer>(); Random rnd = new Random(); int n; while(set.size() < 6) { n = rnd.nextInt(45)+1; set.add(n); } for(int a : set) { System.out.print(a + " "); } System.out.println(); } }
List 구현 클래스
package ex0730; import java.util.Enumeration; import java.util.Iterator; import java.util.ListIterator; import java.util.Vector; public class Ex07 { public static void main(String[] args) { // List구현 클래스 동기화 지원 Vector<String> list = new Vector<String>(); System.out.println("초기 버퍼 용량 : " + list.capacity()); //10 list.add("서울"); list.add("부산"); list.add("대구"); list.add("인천"); list.add("광주"); list.add("대전"); list.add("울산"); list.add("세종"); list.add("강원"); list.add("경기"); list.add("경상"); list.add("전라"); list.add("제주"); System.out.println("버퍼 용량 : " + list.capacity()); // 20 System.out.println("데이터 개수 : " + list.size()); //13 // 버퍼용량을 데이터 개수로 list.trimToSize(); System.out.println("버퍼 용량 : " + list.capacity()); // 13 System.out.println("전체 출력 1번"); for(String s : list) { System.out.println(s+" "); } System.out.println(); // Enumeration = Vector는 사용 가능하지만 List,ArrayList는 사용 불가 System.out.println("전체 출력 2번"); Enumeration<String> e = list.elements(); while(e.hasMoreElements()) { String s = e.nextElement(); System.out.print(s + " "); } System.out.println(); System.out.println("전체 출력 3번"); Iterator<String> it = list.iterator(); while(it.hasNext()) { String s = it.next(); System.out.print(s+" "); } System.out.println(); System.out.println("전체 출력 4번"); ListIterator<String> it2 = list.listIterator(); while(it2.hasNext()) { String s = it2.next(); System.out.print(s+" "); } System.out.println(); System.out.println("전체 출력 5번"); for(int i=0; i<list.size(); i++) { String s = list.get(i); System.out.print(s+" "); } System.out.println(); } }
List의 순차 검색, 정렬, 이분 검색, 역순 정렬
package ex0730; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Ex08 { 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("세종"); list.add("강원"); list.add("경기"); list.add("경상"); list.add("전라"); list.add("제주"); System.out.println(list); int idx; // 순차 검색 idx = list.indexOf("경기"); //없으면 -1 System.out.println("경기 검색 결과 : " + idx + " 인덱스에 존재"); // 가나다 정렬(크기순) - Comparable 인터페이스 구현 클래스만 가능 Collections.sort(list); System.out.println("오름차순 정렬 후:"+list); // 이분검색(정렬되어 있어야 가능) : 없으면 -1 반환 idx = Collections.binarySearch(list, "서울"); System.out.println("서울 이분검색 결과 : "+idx+" 인덱스에 존재"); // 역순(내림차순 정렬) Collections.sort(list, Collections.reverseOrder()); System.out.println("내림차순 정렬 후 : "+ list); } }
반응형'프로그래밍 > JAVA 자바' 카테고리의 다른 글
입출력 스트림(1) / InputStream, OutputStream (0) 2021.08.24 Comparable, Collections 정렬 / Map, Properties, Stack, Queue, PriorityQueue, Shuffle, TreeSet (0) 2021.08.03 List 인터페이스 (0) 2021.07.30 generic , 제네릭 (0) 2021.07.29 throw, throws / 예외 주기 (2) (0) 2021.07.29