스퐁지송 개발노트

22.12.01 (목) 컬렉션 프레임워크 - 배열 본문

JAVA 입문 시작

22.12.01 (목) 컬렉션 프레임워크 - 배열

강준석 2022. 12. 1. 15:15
728x90

List : 순서가 있음, 데이터 중복 가능

 

Set : 순서가 없음, 데이터 중복 불가능(중복된 데이터를 없앨때 사용)

 

Map : 순서가 없음, 키(key)와 값(value)으로 구분

(key : 아름, value : 강준석 or key : 나이 , value : 20)

(key = 중복 불가능 value = 중복 가능)

 

 

ArrayList 예시문

package 컬렉션프레임워크;

import java.util.ArrayList;

public class Sample01 {

	public static void main(String[] args) {

		ArrayList<String> user = new ArrayList<>();	
		//ArrayList<String> = String(문자)만 넣을 수 있음.
		//ArrayList<Integer> = Integer(정수)만 넣을 수 있음.
		//ArrayList<Charater> = Charater(문자)만 넣을 수 있다.
		user.add("강준석");
		user.add("김");
		user.add("박");
		
		System.out.println(user);
		
		for(int i = 0; i<user.size(); i++ ) {
			System.out.println(user.get(i));
		}
		
		user.add(0,"추가할 내용");
		user.add(2,"추가할 내용2");
		//(추가할 방위치,추가할 내용)
		System.out.println(user);
		
		user.remove("추가할 내용");
		//(지울내용)
		System.out.println(user);
		
		user.remove(1);
		//(1번방의 내용을 지워라)
		System.out.println(user);
	}

}

Array List 출력

 

Array List 각종 예시문

 

 

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Sample02 {

	public static void main(String[] args) {
		
		String[] names = {"마이","티모","릴리야"};

		ArrayList<String> name = new ArrayList<String>(Arrays.asList(names));
		System.out.println(name);
		
		ArrayList<String> name2 = new ArrayList<String>(Arrays.asList("1.탑 마이 장인","2.탑 티모 장인","3.탑 릴리야 장인"));
		System.out.println(name2);
		
		System.out.println(String.join(" 준석 ", name2));
		//배열방을 구분해주는 기호(",")를 바꾸고 싶을때
		
		name2.sort(Comparator.naturalOrder()); 
		//오름차순정렬
		System.out.println(name2);
		
		name2.sort(Comparator.reverseOrder());
		//내림차순정렬
		System.out.println(name2);
	}

}

결과~~ 아 롤 하고 싶다~

 

 

ArrayList 와 LinkedList 의 처리 속도 비교

 

 

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.LinkedList;

public class Sample03 {

	public static void main(String[] args) {
	
		ArrayList alist = new ArrayList();
		LinkedList llist = new LinkedList();
		
		for(int i = 0; i<1000; i++) {
			alist.add(i);
			llist.add(i);
		}
		
		System.out.println("ArrayList");
		long start = System.currentTimeMillis();
		
		for(int i = 0; i<alist.size(); i++)
			alist.get(i);
		
		long end = System.currentTimeMillis();
		System.out.println(end-start);
		
		
		System.out.println("LinkedList");
		start = System.currentTimeMillis();
		
		for(int i = 0; i<llist.size(); i++)
			llist.get(i);
		
		end = System.currentTimeMillis();
		System.out.println(end-start);
		
	}

}

ArrayList
1
LinkedList
96

 

 

ArrayList 와 LinkedList 의 입력처리 속도 비교

 

 

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.LinkedList;

public class Sample04 {

	public static void main(String[] args) {
		
		ArrayList alist = new ArrayList();
		LinkedList llist = new LinkedList();
		
		for(int i = 0; i<1000; i++) {
			alist.add(i);
			llist.add(i);
		}
		
		System.out.println("ArrayList");
		long start = System.currentTimeMillis();
		for(int i = 0; i<100000;i++)
			alist.add(500,i);	//500번방 마다 i를 입력
		long end = System.currentTimeMillis();
		System.out.println(end-start);
		
		System.out.println("LinkedList");
		start = System.currentTimeMillis();
		for(int i = 0; i<100000;i++)
			llist.add(500,i);	//500번방 마다 i를 입력
		end = System.currentTimeMillis();
		System.out.println(end-start);
		
	}

}

ArrayList
996
LinkedList
75

 

 

Set - 중복x 순서x

 

예시)

 

package 컬렉션프레임워크;

import java.util.Arrays;
import java.util.HashSet;

public class Sample05 {

	public static void main(String[] args) {
		
		HashSet<String> set = new HashSet<String>();
		
		set.add("안녕");
		set.add("탑라인 장인");
		set.add("준석");
	
		
		System.out.println(set);
		//set에는 순서가 없기때문에 순서없이 저장하여 출력(출력마다 순서가 바뀌지않음)
		
		set.addAll(Arrays.asList("탑 티모","탑 마이","탑 릴리야"));
		//set에 내용 추가 중복된 내용은 출력안됨
		
		System.out.println(set);
		//set에는 순서가 없기때문에 순서없이 저장하여 출력(출력마다 순서가 바뀌지않음)
		
		set.remove("안녕");
		//set에 저장된 내용을 지움
		System.out.println(set);
		System.out.println(set.remove("안녕")); //지움과 동시에 잘 지워졌는지 ture/false 출력
		System.out.println(set);
		
	}

}

결과

 

[준석, 안녕, 탑라인 장인]
[탑 티모, 준석, 안녕, 탑 마이, 탑라인 장인, 탑 릴리야]
[탑 티모, 준석, 탑 마이, 탑라인 장인, 탑 릴리야]
false
[탑 티모, 준석, 탑 마이, 탑라인 장인, 탑 릴리야]

 

Tree Set의 각종 메서드

package 컬렉션프레임워크;

import java.util.Arrays;
import java.util.HashSet;
import java.util.TreeSet;

public class sample06 {

	public static void main(String[] args) {
		
		TreeSet ts = new TreeSet(Arrays.asList(5,7,6,10,4));
		
		System.out.println(ts);
		//순서정렬을 안하는 Set을 오름차순으로 정렬시켜줌
		
		HashSet s1 = new HashSet(Arrays.asList(1,2,3,4,5,6));
		HashSet s2 = new HashSet(Arrays.asList(4,5,6,7,8,9));

//		s1.retainAll(s2);
		//교집합처리(s1과 s2의 중복된 값을 출력)
//		System.out.println(s1);
		
		
//		s1.addAll(s2);
		//합집합 (set 특성상 중복된 값은 없애기때문에 s1+s2이지만 중복된 값은 출력안됨)
//		System.out.println(s1);
				
		s1.removeAll(s2);
		//차집합(s1-s2이지만 s1에는 7,8,9가 없으므로 중복된 값이 지워 진것처럼 보임)
		System.out.println(s1);				
	}

}

 

TreeSet  내림차순정렬, (from,to)값 출력

 

package 컬렉션프레임워크;

import java.util.SortedSet;
import java.util.TreeSet;

public class Main {

	public static void main(String[] args) {

		SortedSet set = new TreeSet();	//set을 오름차순으로 정렬 시켜줌(기본세팅으로 되있음)
		
		String from = "bat";
		String to = "d";
		
		set.add("ant");
		set.add("alias");
		set.add("batman");
		set.add("aha");
		set.add("cola");
		set.add("Cola");
		set.add("ddr");
		set.add("dance");
		set.add("dEEE");
		set.add("deee");
		set.add("ever");
		set.add("giant");
		set.add("zoo");
		
		System.out.println(set);	
		//오름차순으로 대문자 먼저 그 다음 소문자 정렬됨 ("A~Z"의 주소값이 "a"보다 작으므로)
		System.out.println(set.subSet(from, to)); //(from = "bat", to = "d")
		// 정렬이 된 상태에서 from~to 사이의 값을 출력
		
		set = new TreeSet(new Descend());	//set을 내림차순으로 정렬시킴
		
		set.add("ant");
		set.add("alias");
		set.add("batman");
		set.add("aha");
		set.add("cola");
		set.add("Cola");
		set.add("ddr");
		set.add("dance");
		set.add("dEEE");
		set.add("deee");
		set.add("ever");
		set.add("giant");
		set.add("zoo");
		
		System.out.println(set);
		System.out.println(set.subSet(from, to)); //오류뜨는게 정상
		//출력이 안되는 이유 이진수로 from과 to를 찾을때 from의 앞쪽을 시작으로 찾는데(값이 숫자라 생각하고 from이상 to미만의 값을 구한다고 생각하면 편함)
		//내림차순으로 되있기때문에 from의 앞에 from보다 큰값가 없어서 오류가뜸
	}


}

결과 오류뜨는게 당연 설명은 코드문에 써놓음

 

 

 

728x90
Comments