로또 예제 간편히 가능
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 공부하기.





단방향(우리가 하는 거??),
반이중(응답까지?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

Share article