⚡ Collector
Collector : generic을 사용하는 유일한 interface
❗ 기본제공 라이브러리
어렵당... 몰라두댐.. 나중에혹시 쓰게된다면..참고... 추후에 공부..
stringbuilder가 뭐였더라... https://dev-eunse.tistory.com/75
Stream 사용하면 lamda방식이구나 하면됨
public class interface_etc { public static void main(String[] args) { String data[] = {"aaa","bbb","ccc"}; //원시배열 Stream<String> st = Stream.of(data); //원시배열을 바로 핸들링하기 위해 stream선언함 //Stream : lamda 형태 구조로 구성하기 위해 사용 //(Stream 사용하면 lamda방식이구나 하면됨) //Stream.of : 배열값을 각각 분리하여 전달 //외부class 호출 및 interface에 있는 값을 리턴 결과 받기 inter it = new inter(); //배열 갯수만큼 it가 실행됨 String result = st.collect(it); //collect : 자료형 형태의 generic //System.out.println(Arrays.toString(data)); //임시로 원시배열 출력 System.out.println(result); //aaabbbccc 출력 } } //다 안써도 됨 필요한것만 쓰면됨 //<> : <자료형,배열형태,return시 사용되는 자료형> //StringBuilder대신 ArrayList 이런거 써도 됨 class inter implements Collector<String, StringBuilder, String>{ @Override//1번작동 : 자료형 변환(String->StringBuilder로) //Characteristics : method 연산을 구현하는 method (다중 스레드) public Set<Characteristics> characteristics() { return Collections.emptySet(); } @Override //2 : 새로운 문자열을 생성 public Supplier<StringBuilder> supplier() { return ()-> new StringBuilder(); } @Override //3 : append를 이용하여 배열에 값을 삽입 //public Function<StringBuilder, String> finisher() 얘랑 거의 같음 public BiConsumer<StringBuilder, String> accumulator() { return (a,b) -> a.append(b); } @Override //4 : 각각의 문자를 문자열로 생성 //문자열 배열 method public BinaryOperator<StringBuilder> combiner() { return (a,b) -> new StringBuilder(); } @Override //5 : 최종 문자열값을 return하는 역할 //문자열 배열 및 문자 method public Function<StringBuilder, String> finisher() { return a -> a.toString(); } }
⚡ Comparable
먼말인지 모르겟당.. 나중에 공부할것..
Comparable : Stream을 사용시 적용하는 interface
Comparable의 주목적
여러개의 data값을 내림차순,오름차순으로 정렬하는 interface 역할
public class stream1 { public static void main(String[] args) { //Stream을 이용하여 해당 class를 각각 호출해 인자값을 전달 (of : 각각전달시 사용) Stream<mb> sm = Stream.of( new mb("홍길동",1000), new mb("이순신",2000), new mb("강감찬",1500) ); String result = sm.toString(); //해당 값을 문자로 return 받음 System.out.println(result); //java.util.stream.ReferencePipeline$Head@16f65612 출력 (..?) } } class mb implements Comparable<mb> { String name; int point; public mb(String user,int p) { //데이터를 받는 즉시실행 메소드 this.name = user; this.point = p; } public String toString() { //진짜 그 toString-걍 이름지은게 아님 //toString : 배열을 문자로 변경 String msg = this.name + "님-[" + this.point +" ]원"; return msg; } //연산처리를 해 값을 return하는 method public int compareTo(mb o) { //최종 결과를 return return 0; }; }
'CLASS > JAVA' 카테고리의 다른 글
#20-2 / generic code 형태의 class (1) | 2024.06.11 |
---|---|
#20-1 / 람다(lamda)코드 사용 방식 (1) | 2024.06.11 |
#19 / Thread (class 형태 , interface 형태) (0) | 2024.05.31 |
#18-2 / Thread를 이용한 멀티 서버 (0) | 2024.05.27 |
#18-1 / 서버 - UDP (0) | 2024.05.27 |