정의 1
정의 2
List 예제
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>(); // 리스트에 어떤 타입의 자료구조를 담을지 선, 아직 사이즈를 지정해주지 않음
integerList.add(1);
integerList.add(5);
integerList.add(4);
integerList.add(11);
integerList.add(10);
System.out.println(integerList); // 출력값 : [1, 5, 4, 11, 10]
Collections.sort(integerList); // 설정해주지 않으면 오름차순으로 정렬
System.out.println(integerList); // 출력값 : [1, 5, 4, 11, 10]
System.out.println(integerList.size()); // 출력값 : 5
integerList.remove(4); // 4번째 인덱스를 삭제해라
System.out.println(integerList); // 출력값 : [1, 4, 5, 10]
for(int i=0; i < integerList.size(); i++) {
System.out.println(integerList.get(i)); // 출력값 : 1 / 4 / 5 / 10
}
}
}
Set 예제
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> integerSet = new HashSet<>();
integerSet.add(1);
integerSet.add(1);
integerSet.add(3);
integerSet.add(2);
integerSet.add(9);
integerSet.add(8);
System.out.println(integerSet); // 출력값 : [1, 2, 3, 8, 9], add로 넣어준 순서와 상관이 없
Set<String> stringSet = new HashSet<>();
stringSet.add("LA");
stringSet.add("New York");
stringSet.add("LasVegas");
stringSet.add("San Francisco");
stringSet.add("Seoul");
System.out.println(stringSet); // 출력값 : [San Francisco, New York, LasVegas, LA, Seoul]
stringSet.remove("Seoul");
System.out.println(stringSet); // 출력값 : [San Francisco, New York, LasVegas, LA]
List<String> target = new ArrayList<>();
target.add("New York");
target.add("LasVegas");
stringSet.removeAll(target);
System.out.println(stringSet); // 출력값 : [San Francisco, LA]
System.out.println("LA 포함되어있나요?" + stringSet.contains("LA")); // 출력값 : LA 포함되어있나요?true
System.out.println("Seoul 포함되어있나요?" + stringSet.contains("Seoul")); // 출력값 : Seoul 포함되어있나요?false
System.out.println(stringSet.size()); // 출력값 : 2
stringSet.clear();
System.out.println(stringSet); // 출력값 : []
}
}
Map 예제
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(1, "apple");
map.put(2, "berry");
map.put(3, "cherry");
System.out.println(map); // 출력값 : {1=apple, 2=berry, 3=cherry} : {key=value}형태
System.out.println("0 in map: " + map.get(0)); // 출력값 : 0 in map: null
// : index가 아닌 key = 0을 찾으므로 없다.
System.out.println("1st in map: " + map.get(1)); // 출력값 : 1st in map: apple
// : key를 받아서 value를 리턴한다.
map.remove(2); // key = 2 에 해당하는 값을 지운다
System.out.println(map); // 출력값 : {1=apple, 3=cherry}
System.out.println(map.containsKey(2)); // 출력값 : false
System.out.println(map.containsValue("cherry")); // 출력값 : true
map.clear();
System.out.println(map); // 출력값 : {}
}
}
스택 예제
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(7);
stack.push(5);
System.out.println(stack); // 출력값 : [1, 3, 7, 5]
System.out.println(stack.peek()); // 출력값 : 5 : 가장 마지막에 넣은 값이 출력
System.out.println("size : " + stack.size()); // 출력값 : size : 4 : peek은 확인만
System.out.println(stack.pop()); // 출력값 : 5 : 가장 마지막에 넣은 값을 뽑아낸다
System.out.println("size : " + stack.size()); // 출력값 : size : 3 : pop해서 뽑음
System.out.println(stack.contains(1)); // 출력값 : true
System.out.println(stack.empty()); // 출력값 : false : 비어있지 않으므로
stack.clear();
System.out.println(stack.isEmpty()); // 출력값 : true
}
}
큐 예제
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(5);
queue.add(3);
System.out.println(queue); // 출력값 : [1, 5, 3]
System.out.println(queue.poll()); // 출력값 : 1 : 처음 넣어준 값을 뽑아낸다
System.out.println(queue); // 출력값 : [5, 3] : 가장 처음에 넣어준게 뽑아나와서
System.out.println(queue.peek()); // 출력값 : 5 : 처음 넣어준 값을 출력
}
}
ArrayDeque 예제
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) {
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
arrayDeque.addFirst(1);
arrayDeque.addFirst(2);
arrayDeque.addFirst(3);
arrayDeque.addFirst(4);
System.out.println(arrayDeque); // 출력값 : [4, 3, 2, 1] : 계속해서 first에만 넣어주므로 처음 넣었던 1이 뒤로 밀려난다.
arrayDeque.addLast(0);
System.out.println(arrayDeque); // 출력값 : [4, 3, 2, 1, 0]
arrayDeque.offerFirst(10);
System.out.println(arrayDeque); // 출력값 : [10, 4, 3, 2, 1, 0]
arrayDeque.offerLast(-1);
System.out.println(arrayDeque); // 출력값 : [10, 4, 3, 2, 1, 0, -1]
arrayDeque.push(22); // stack에서 사용하던 push
System.out.println(arrayDeque); // 출력값 : [22, 10, 4, 3, 2, 1, 0, -1]
System.out.println(arrayDeque.pop()); // 출력값 : 22
System.out.println(arrayDeque); // 출력값 : [10, 4, 3, 2, 1, 0, -1]
// queue에 있던 poll, 둘 다 있던 peek, size, clear, isEmpty 모두 작동
}
}
public class 클래스명<T> {...}
public interface 인터페이스명<T> {...}
<T> == Type
<E> == Element
<K> == Key
<V> == Value
<N> == Number
<R> == Result
람다의 형식
[기존의 메소드 형식]
반환타입 메소드이름(매개변수 선언) {
수행 코드 블록
}
[람다식의 형식]
반환타입 메소드이름(매개변수 선언) -> {
수행 코드 블록
}
람다식 예제
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("korea");
list.add("japan");
list.add("france");
Stream<String> stream = list.stream();
stream.map(str -> {
System.out.println(str);
return str.toUpperCase();
}) .forEach(System.out::println);
// list.add에서 소문자로 입력하였지만 toUpperCase 때문에 출력은 전부 대문자로 나온다.
// -> 뒤에는 함수의 내용이 들어간다. 여러 함수가 들어갈 경우 {} 중괄호를 사용한다.
}
}
스트림의 특징
스트림 예제
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("서울");
list.add("부산");
list.add("대구");
list.add("용인");
System.out.println(list); // 출력값 : [서울, 부산, 대구, 용인]
List<String> result = list.stream()
.limit(2) // 앞에 있는 두개만 남기고 지우겠다
.collect(Collectors.toList());
System.out.println(result); // 출력값 : [서울, 부산]
System.out.println("list -> transformation -> set"); // set 이라는 자료구조로 바꾸겠다.
Set<String> set = list.stream() // 리스트에 있는 데이터를 하나씩 꺼내서
.filter("서울"::equals) // 서울이랑 글자가 같은지 보고 같은거만 남기겠
.collect(Collectors.toSet()); // set의 자료구조로 바꿔서 모아주겠다.
System.out.println(set); // 출력값 : [서울]
}
}
이씨 성을 가진 인원의 수를 출력해라
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("김정우", "김호정", "이하늘", "이정희", "박정우", "박지현", "정우석", "이지수");
System.out.println("이씨 성을 가진 친구들 : " + names.stream()
.filter(name -> name.startsWith("이"))
.count());
}
}
: 이씨 성을 가진 친구들 : 3
네트워크의 기본적인 개념