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()); //내림차순 정렬
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<Integer> arr = new ArrayList<>(); Collections.sort(arr);
- 내림차순 정렬
ArrayList<Integer> arr = new ArrayList<>(); Collections.sort(arr, Comparator.reverseOrder());
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은 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으로 반환.
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<Integer> priorityQueueLowest = new PriorityQueue<>();
- 높은 숫자가 우선순위인 우선순위 큐 (최대힙)
PriorityQueue<Integer> priorityQueueHighest = new PriorityQueue<>(Collections.reverseOrder());
priorityQueueLowest.add(1); //큐에 삽입 priorityQueueLowest.poll(); //최소힙의 첫번째 값 반환 (가장 작은 수) 하고 제거 priorityQueueLowest.peek(); //최소힙의 첫번째 값 반환 (가장 작은 수)
- 반올림 - 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 a = Integer.parseInt(문자열); // 1
String a = Integer.toString(1); // "1"