이소연's avatar
Aug 05, 2024
로또 예제 간편히 가능
set<integer>lotto = new hasset<>();
list<integer> arr = new arraylist<>(lotto);
collections.sort(arr);
lotto.stream()foreach(i→print(i+” ”));
모르겠어용
 
set-중복제거
 
해시맵
 
 
(가, 나, 다)
차이구분
링크드리스트LinkedList : 바로 ‘다’ 못찾음. 가를 찾아야 나,나를 통해 다 찾음. ~았다 정도. 쓰지 말자.
어레이리스트ArrayList : 다를 바로 찾아감. 번지수로.(2번지로 바로 접근 가능)
HashMap : 키 이름으로 바로 찾음
 
맵 모르겠어
 
arr.stream
data /0번지
data2/1
data3/2
물길에 하나씩 던짐.(0-1-2)
package ex14; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class StreamEx01 { public static void main(String[] args) { //인덱스만 하면 개발자 외에는 어떤 건지 모름 ex)20 // 표시하려고 hash로 표현, 혹은 클래스로 표현. //그냥 data는 map도 가능하지만 클래스로 만듦. 왜냐면.. // 맵은 오타가능(컴파일은 못찾음), // 다운캐스팅-v 해야 되서 귀찮. //맵으로 해야 사용자 아무 타이을 받음. (제네릭은 길이 변경x & 갯수를 모르니까), // 다 클래스로 만듦-v,꺼내서 쓸때는 다운(보통은 오브젝트로 해서) //무조건 arraylist로 만듦? 연속된 데이터를 벡터타입(같은 타입)으로 저장하고 싶어 //ooo를 클래스? 2개만 기억. Map<String, Object> data = new HashMap<>(); data.put("name", "홍길동"); data.put("age", 20); Map<String, Object> data2 = new HashMap<>(); data2.put("name", "장보고"); data2.put("age", 15); Map<String, Object> data3 = new HashMap<>(); data3.put("name", "이순신"); data3.put("age", 30); List<Map<String, Object>> arr = Arrays.asList(data, data2, data3); //위의 자료를 만나이로 바꾸고 싶어 //물길 만듦, MAP 가공, 해시?해서 다운캐스팅, 오브젝트로 해서? List<Map<String, Object>> newArr = arr.stream().map(d -> { int newAge = (Integer) d.get("age") - 1; //덮어씌우기 d.put("age", newAge); return d; }).toList(); newArr.stream().forEach(d -> { System.out.println(d.get(), newAge); }); } }
package ex14; import java.util.Arrays; import java.util.List; class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void changeAge() { this.age = this.age - 1; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } } public class StreamEx02 { public static void main(String[] args) { // User 3명 만들기 (홍길동 20, 장보고 15, 임꺽정 30) User u1 = new User("홍길동", 20); User u2 = new User("장보고", 15); User u3 = new User("임꺽정", 30); // ArrayList에 User 담기 List<User> arr = Arrays.asList(u1, u2, u3); // stream으로 순회하면서 map으로 가공하기 ( 나이 -1 ) List<User> newArr = arr.stream().map(u -> { //맵과 클래스의 차이. 클래스는 행위를 넣을 수 있음. //코드가 100줄인 경우 다 적을 수 없잖아 u.changeAge(); return u; }).toList(); newArr.stream().forEach(user -> { System.out.println(user.getAge()); }); } }
stream 공부하기.
notion image
notion image
notion image
notion image
notion image
단방향(우리가 하는 거??),
 
반이중(응답까지?2개 받는 거(보는 버퍼, 읽는 버퍼), 나(보는 거, 쓰는 거)),
보내고 응답(요청에 반응)
내가 요청 했을 때만 가능-v http , web은 www.dfjdjf enter → 버퍼드 리더, 버퍼드 라이드에 써서 html?에 답함.
web 동작 방법, f5는 재요청?
스레드 1개만 있으면 됨. 버퍼드 라이드에 1을 써서 보냈어. 순서대로??
장점) 요청할 때만 반응,. 응답 후 끝 .할 일 없음
무전기 같은 것.(요청을 해야 대답 옴.)-v, 부화가 적음 while돌 필요x
모든 web은 반이중~ 동시에 너무 많이 들어와서 반이중하면 안돼.-v
힙이 계속 차고., 낭비 줄이려고 항상 새로운 사람인 것처럼 함.
state lease()-v_요청자의 입장에서
 
 
전이중, (언제든 메세지 보낼 수 있어), 스레드 2개 필요??
양방향?
: 쌍방향, 채팅 같은 , 카카오톡 같은
-여친이랑 카톡할 때, 안 보내도 문자 옴-v 서로의 카톡이 있을 때
카카오톡 : 쓰려고 writebuffer,
샌드스래드(bufferwriter have), 리시버스래드
단점) 계속 상대방과 연결, while도면서 계속해야 돼서 부화가 심함., 전화기 같은 것-v계속 귀 귀울리고 있어야 함.
전화가 끝기지 않음. 좋은 점.-v
state full(요청자의 상태가 계속 남아있다.)_요청자의 입장에서-v
notion image
Share article

Coding's note