일반 배열 (int[])
기능 |
설명 |
생성 |
int[] arr = new int[n]; |
접근 |
XX |
삽입, 삭제 |
XX |
길이 |
arr.length |
최대, 최소 |
Arrays.stream(arr).max().orElse(-1) |
초기화 |
Arrays.fill(arr, 1); |
정렬 |
Arrays.sort(arr); |
전체 출력 |
Arrays.toString(arr); |
일반 객체 배열 (Class[])
기능 |
설명 |
생성 |
Class[] arr = new Class[n]; |
접근 |
arr[i] |
삽입, 삭제 |
XX |
길이 |
arr.length |
최대, 최소 |
Arrays.stream(arr).max((c1, c2) -> c1.x - c2.x).orElse(null); |
초기화 |
XX |
정렬 |
1. 오름차순 Arrays.sort(arr, (c1, c2) -> c1.x - c2.x); 2. 내림차순 Arrays.sort(arr, (c1, c2) -> c2.x - c1.x); |
전체 출력 |
Class 내부에 public String toString() 메서드 오버라이딩 구현 Arrays.toString(arr); |
리스트 (ArrayList)
기능 |
설명 |
생성 |
List<Integer> list = new ArrayList<>(); |
접근 |
list.get(i); |
삽입 |
list.add(i); //맨 뒤 삽입 list.add(i, b); //번째 삽입 |
삭제 |
list.remove(i); //번째 제거 list.remove(Integer.valueOf(i)); //값 제거 |
길이 |
list.size(); |
최대, 최소 |
Collections.max(list); |
초기화 |
Collections.fill(list, i); |
정렬 |
Collections.sort(list); //오름차순 Collections.sort(list, Collections.reverseOrder()); //내림차순 |
전체 출력 |
list.toString(); |
객체 리스트 (ArrayList)
기능 |
설명 |
생성 |
List<Class> list = new ArrayList<>(); |
접근 |
list.get(i); |
삽입 |
list.add(new Class()); //맨 뒤 삽입 list.add(i, new Class()); //번째 삽입 |
삭제 |
list.remove(i); //번째 제거 |
길이 |
list.size(); |
최대, 최소 |
Collections.max(list, (c1, c2) -> c1.x - c2.x); |
초기화 |
XX |
정렬 |
Collections.sort(list, (c1, c2) -> c1.x - c2.x); //오름차순 Collections.sort(list, (c1, c2) -> c2.x - c1.x); //내림차순 |
전체 출력 |
Class 내부에 public String toString() 메서드 오버라이딩 구현 list.toString(); |
문자열 인덱스 배열
기능 |
설명 |
생성 |
Map<String, String> map = new HashMap<>(); |
접근 |
String v = map.get(key); |
키 접근 |
Set<String> keys = map.keySet(); |
삭제 |
map.remove(key); |
전체 출력 |
map.toString(); |
스택 (Stack)
기능 |
설명 |
생성 |
Stack<Integer> s = new Stack<>(); |
삽입 |
s.push(1); |
삭제 |
s.pop(); |
조회 |
s.peek(); |
전체 조회 |
s.toString(); |
empty |
s.isEmpty(); |
큐 (Queue)
기능 |
설명 |
생성 |
Queue<Integer> q = new LinkedList<>(); |
삽입 |
q.offer(1); |
삭제 |
q.poll(); |
조회 |
q.peek(); |
전체 조회 |
q.toString(); |
empty |
q.isEmpty(); |
우선순위 큐 (PriorityQueue)
- java.util.PriorityQueue 사용
- Comparator<> 전달
기능 |
설명 |
생성 |
PriorityQueue<Class> pq = new PriorityQueue<>((c1, c2) -> c1.x - c2.x); |
삽입 |
q.offer(1); |
삭제 |
q.poll(); |
조회 |
q.peek(); |
전체 조회 |
q.toString(); |
empty |
q.isEmpty(); |
덱 (Deque)
기능 |
설명 |
생성 |
Deque<Integer> dq = new LinkedList<>(); |
앞 삽입 |
dq.offerFirst(1); |
뒤 삽입 |
dq.offerLast(2); |
앞 삭제 |
dq.pollFirst(); |
뒤 삭제 |
dq.pollLast(); |
앞 조회 |
dq.peekFirst(); |
뒤 조회 |
dq.peekLast(); |
전체 조회 |
dq.toString(); |
empty |
dq.isEmpty(); |
노드 관점 가중치 그래프
ArrayList<ArrayList<Integer>> graph = new ArrayList<ArrayList<Integer>>();
// 노드 개수만큼 추가
for (int i = 1; i <= n; i++) {
graph.add(new ArrayList<Integer>());
}
StringTokenizer st;
for (int j = 0; j < m; j++) {
st = new StringTokenizer(br.readLine());
int s = Integer.valueOf(st.nextToken());
int e = Integer.valueOf(st.nextToken());
graph.get(s).add(e);
}
노드 관점 가중치 그래프
class Node {
int index;
int distance;
public Node(int index, int distance) {
this.index = index;
this.distance = distance;
}
}
ArrayList<ArrayList<Node>> graph = new ArrayList<ArrayList<Node>>();
// 노드 개수만큼 추가
for (int i = 1; i <= n; i++) {
graph.add(new ArrayList<Node>());
}
StringTokenizer st;
for (int j = 0; j < m; j++) {
st = new StringTokenizer(br.readLine());
int s = Integer.valueOf(st.nextToken());
int e = Integer.valueOf(st.nextToken());
int w = Integer.valueOf(st.nextToken());
graph.get(s).add(new Node(e, w));
}
간선 관점 그래프
class Edge implements Comparable<Edge> {
int distance;
int nodeA;
int nodeB;
public Edge(int distance, int nodeA, int nodeB) {
this.distance = distance;
this.nodeA = nodeA;
this.nodeB = nodeB;
}
}
ArrayList<Edge> edges = new ArrayList<>();
// 모든 간선에 대한 정보를 입력 받기
for (int i = 0; i < e; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
int cost = sc.nextInt();
edges.add(new Edge(cost, a, b));
}
노드 관점 문자 노드 그래프