[java] 코테 스킬

Seongho·2023년 4월 18일
1

java

목록 보기
6/10

배열

배열 슬라이싱

int[] arr = {0, 1, 2, 3, 4, 5};
arr = Arrays.copyOfRange(arr, 0, 3);		//인덱스 0~2까지 슬라이싱 

배열 정렬

  • 오름차순 정렬
int[] arr = {5, 0, 2, 3, 4, 1};
Arrays.sort(arr);		//오름차순 정렬
Arrays.sort(arr, 1, 4);		//인덱스 1부터 3까지 오름차순 정렬
  • 내림차순 정렬 : 내림차순 정렬은 primitive type을 정렬하지 못한다. 따라서, Object를래스를 상속하는 Wrapper클래스로 Boxing해준 후, Collections.reverseOrder() 를 사용한다.
int[] arr = {5, 0, 2, 3, 4, 1};
Integer[] arr2 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
Arrays.sort(arr2, Collections.reverseOrder());		//내림차순 정렬

2차원 배열 둘 중 하나 기준으로 정렬

int[][] arr = new int[][]{{5,40},{3,50},{1,30},{4,20},{2,10}};
  • 오름차순 정렬
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0]));	//첫 번째 숫자 기준 오름차순 정렬 
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1]));	//두 번째 숫자 기준 오름차순 정렬 
  • 내림차순 정렬
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[0]).reversed());	//첫 번째 숫자 기준 내림차순 정렬 
Arrays.sort(arr, Comparator.comparingInt((int[] o) -> o[1]).reversed());	//두 번째 숫자 기준 내림차순 정렬 

ArrayList

  • 오름차순 정렬
ArrayList<Integer> arr = new ArrayList<>();
Collections.sort(arr);
  • 내림차순 정렬
ArrayList<Integer> arr = new ArrayList<>();
Collections.sort(arr, Comparator.reverseOrder());

Set

Set은 중복된 요소를 저장하지 않는 인터페이스이다. 입력 순서를 유지하지 않는다. Set을 구현한 컬렉션은 HashSet과 TreeSet이 있다.

  • HashSet
Set<Integer> set = new HashSet<>();			//객체 생성 
set.add(1);									//값 추가 
set.contains(1);							//1이 포함되어있는지 확인 
set.isEmpty();								//비어있는지 확인
set.remove(1);								//값 삭제 
set.size();									//사이즈 

Map

Map은 Key, Value로 이루어진 자료구조를 구현한 인터페이스로, 입력 순서를 유지하지 않는다. Set을 구현한 컬렉션은 HashMap, LinkedHashMap, TreeMap이 있다.

  • HashMap
Map<Integer, String> map = new HashMap<>();		//객체 생성 
map.put(1, "A");								//값 추가 key = 1, value = A
map.get(1);										//key에 해당하는 value. 없으면 null 반환
map.containsKey(1);								//map에 해당 키가 있는지 확인 (boolean 반환)
map.remove(1);									//key에 해당하는 아이템 삭제(1,"A") 후 value 반환 
map.size();										//map에 들어가 있는 쌍 갯수 
map.keySet();									//map의 key들을 모아 Set으로 반환. 

keySet() 활용

Map을 반복문을 돌면서 모든 키를 출력하는 코드

Map<String, String> map = new HashMap<>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
//
for(String key : map.keySet()){
	System.out.println(key);			//a b c 출력
}

PriorityQueue

힙을 이용한 자료구조로, 우선순위가 높은 데이터를 먼저 꺼낼 수 있는 자료구조이다.

  • 낮은 숫자가 우선순위인 우선순위 큐 (최소힙)
PriorityQueue<Integer> priorityQueueLowest = new PriorityQueue<>();
  • 높은 숫자가 우선순위인 우선순위 큐 (최대힙)
PriorityQueue<Integer> priorityQueueHighest = new PriorityQueue<>(Collections.reverseOrder());
priorityQueueLowest.add(1);			//큐에 삽입 
priorityQueueLowest.poll();			//최소힙의 첫번째 값 반환 (가장 작은 수) 하고 제거 
priorityQueueLowest.peek();			//최소힙의 첫번째 값 반환 (가장 작은 수)

Math

활용

  • 반올림 - Math.round() : 소수점 첫째자리에서 반올림
double val = 1.12345; 
Math.round(val);			// 1 반환 
  • 소수점 몇 째 자리까지 반올림 (스킬)
/* 둘째자리까지 반올림 예제 */
double val = 1.12345; 
val *= 100;					// val == 123.45
Math.round(val);			// val == 123
val /= 100.0;				// val == 1.23
  • 절대값 - Math.abs()
double val = -1.12345; 
Math.abs(val);				// 1.12345 반환
  • 두 값 중 큰 값 - Math.max()
Math.max(1.1, 2.2)			// 2.2 반환 
  • 두 값 중 작은 값 - Math.min()
Math.min(1.1, 2.2)			// 1.1 반환 

문자열

문자열 뒤집기

문자열을 거꾸로 뒤집을 때는 StringBuffer 클래스를 사용해야 한다.

String str = "ABCDE";
StringBuffer sb = new StringBuffer(str);	//StringBuffer 객체에 ABCDE 입력 
String reverseStr = sb.reverse().toString();	//문자열 뒤집음 

문자열 대소문자 변환

String str = "aBcdEF";
String upperStr = str.toUpperCase();		//대문자로 변환
String lowerStr = str.toLowerCase();		//소문자로 변환

문자열 치환

자바에서 문자열은 불변이다. 따라서, 문자열을 변형시키고자 하면 다른 문자열 변수로 반환받아야 한다.

  • replace : target문자열을 replacement문자열로 모두 치환 후 문자열 반환
String str = "aaabbbccc";
String str2 = str.replace("a", "b");		//str == aaabbbccc		str2 == bbbbbbccc
  • replaceAll : 문자열 내에 정규식 regex와 매치되는 문자열을 replacement로 치환 후 문자열 반환
//문자열에서 숫자 추출 예제. 0-9가 아닌 것들을 공백으로 치환 
String str = "“t0e0a1c2h0er";
String str2 = str.replaceAll("[^0-9]", "");		//str == aaabbbccc		str2 == 00120

문자열 -> int

int a = Integer.parseInt(문자열);		// 1

int -> 문자열

String a = Integer.toString(1);		  // "1"
profile
Record What I Learned

0개의 댓글