길이: arr.length
선언
int[] arr = new int[3];
int[] arr = {1,2,3};
int[] arr = new int[] {1,2,3};
길이
int n = arr.length; // 3
배열 -> List
List<String> list = Arrays.asList(arr);
정렬
int arr[] = {10, 8, 11, 2, 3, 0};
// 오름차순 {0, 2, 3, 8, 10, 11}
Arrays.sort(arr);
// 내림차순 {11, 10, 8, 3, 2, 0}
Arrays.sort(arr, Collections.reverseOrder());
이진탐색
Arrays.binarySearch(arr, 2); // -> index
값 추가 (append)
Java의 기본 배열은 고정 크기의 데이터라서 처음에 초기화하지 않고 동적으로 값을 추가하는 것이 불가능하여 List형으로 변환하는 작업을 수행해야 한다. (반복문으로 하면 됨)
따라서 자바에서 배열에 동적으로 추가, 수정, 삭제 작업을 많이 하는 경우에는 List형을 쓰도록 하자. (기본 배열은 고정 크기일때나 읽기용으로 쓰자)
비교
// arr1==arr2 <- 이 방식은 사용하면 안 됨
Arrays.equals(arr1, arr2);
2차원배열
int[][] arr1 = new int[][]
{
{1, 2},
{3, 4},
{5, 6}
};
int[][] arr2 = new int[5][5];
대부분
길이: collection.size()
접근: collection.get(index)
추가: collection.add(5)
비어있는지 유무: collection.isEmpty()
배열화: collection.toArray() -> Object[]
선언
List<Integer> list = new ArrayList<>();
List<Integer> list = new ArrayList<>(map); // <- map의 key들이 list에 담김
List<Integer> list = new ArrayList<>();
초기화
List<Integer> list = Arrays.asList(1,2,3);
List<Integer> list = List.of(4,5,6);
추가, 추출, 변경, 삭제 등
list.add(val); // 추가
list.get(index); // 추출
list.set(index, val); // 변경
list.remove(index); // 삭제
list.contains(val); // 값 존재 유무
list.containsAll(collection); // 값 전체 존재 유무
list.addAll(collectinon); // 전부 추가
list.isEmpty(); // 비었는지 확인
정렬
// List 내장 메소드
list.sort(Comparator.naturalOrder());
list.sort(Comparator.reverseOrder());
// Collections 클래스 사용
Collections.sort(list);
Collections.sort(list, Collections.reverseOrder());
비교
list1.containsAll(list2); // containsAll 사용, 순서 달라도 true
// (sort 사용하면 순서 보장)
iterator 사용
// iterator 선언
Iterator<Integer> it = list.iterator();
// 인덱스 오름차순 순회
while (it.hasNext()) {
...
}
// 인덱스 내림차순 순회
while (it.hasPrevious()) {
...
}
// 순회하면서 삭제
for (Iterator<Integer> it = list.iterator(); it.hasNext();) {
int x = it.next();
if(x == 5)
it.remove();
}
List -> String
List<Integer> list = new ArrayList<>();
String str = list.toString(); //
Queue<Integer> queue = new LinkedList<>();
queue.add(val)
quque.poll()
queue.peek()
queue.isEmpty()
<- 보통 while문 돌릴 때 사용stack.push(val)
stack.pop()
stack.peek()
stack.isEmpty()
, stack.empty()
<- 왜 두개일까...Set<Integer> set = new HashSet<>();
Set<Integer> set = new TreeSet<>();
set.add(key)
set.contains(key)
길이: map.size()
접근: map.get(key)
추가: map.put(key, val)
존재 유무 확인: map.containsKey(key) -> boolean
// containsKey()로 존재유무 확인
if (!map.containsKey("key")) map.put("key", 1);
// 특정 키가 없으면 기본값 설정, 있으면 기존 값 가져오는 함수
map.put("key", map.getOrDefault("key", default_value);
// keySet() <- key들을 뽑음,
for(String key : map.KeySet()) {
map.get(key);
}
//valueSet() <- value들을 뽑음
Set<Type> vs = map.valueSet();
길이: str.length()
접근: str.charAt(index) -> char
비교
str1.equals(str2); // -> boolean
str1.compareTo(str2); // -> int, str1 < str2 면 -1, 같으면 0, str1 > str2 면 1
==
로 비교하지 말 것존재 유무 판단
str.contains(string) // <- 문자열의 존재 유무임
문자열 <-> int
String s = "25";
int n = Integer.parseInt(s); // 25
int n = 25;
String s = String.valueOf(n); // "25"
String s = Integer.toString(n); // "25"
문자열 -> List
// join()을 사용한다
List<String> list = List.of("hello","123","world");
String str = String.join("", list); // hello123world
List<String>
일때만 가능split
String[] strings1 = str.split(""); // 모든 글자 split
String[] strings2 = str.split(" "); // 공백 단위로 split
String[]
substring
String s = "Hello Java";
s.substring(0, 4); // "Hell"
substring(start,end)
에서 start
는 포함, end
는 미포함정렬하거나 값 비교해야 될 때 사용하는 클래스.
보통은 특정 값으로 정렬해야 할 때 사용.
public class ListComparator implements Comparator<CityInfo>{
@Override
public int compare(CityInfo o1, CityInfo o2) {
int todayTotal1 = Integer.parseInt(((CityInfo)o1).getTodayTotal());
int todayTotal2 = Integer.parseInt(((CityInfo)o2).getTodayTotal());
if(todayTotal1 > todayTotal2){
return -1;
}else if(todayTotal1 < todayTotal2){
return 1;
}else{
return 0;
}
}
}