상세 컨텐츠

본문 제목

[스트림] 그루핑, 콜렉트

자바

by esoesmio 2023. 4. 11. 00:14

본문

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
////////스트림을 리스트에 다시 담기


public class z12 {


    // 그루핑바이로 MAP<company, List<creditcard> 만들기

//    Map<String, List<creditcard>> commap = cd
///  Map<String, List<creditcard>> 형태로 키를 이름으로
    //Map<String, Double>  형태로 키를 이름으로 밸류를 리밋의 에버리지로
    /// 이름이 a인것들만 다시 리스트로
    //Map<String, Integer> cardmap 해쉬맵 만들어서 키는 이름, 밸류는 1로

    public static void main(String[] args) {
        List<creditcard> cd = new ArrayList<>();

        cd.add(new creditcard("a", 2));
        cd.add(new creditcard("b", 1));
        cd.add(new creditcard("c", 5));
        cd.add(new creditcard("d", 7));
        cd.add(new creditcard("e", 1));

        //특정 카드사의 카드만 뽑아서 collect로 수집
        Map<String, List<creditcard>> commap = cd.stream().collect(Collectors.groupingBy(

                //키를 구하는 메소드 구현
                card -> card.getName()));


        //구리핑 바이 메소드  MAP<COmpany, Average(limitmonty


        Map<String, Double> avglim = cd.stream().collect(Collectors.groupingBy(

                //키를 구하는 메소드 구현
                card -> card.getName(),
                Collectors.averagingDouble(card -> card.getLimit())


        ));


        System.out.println(commap.toString());

        //리스트로 다시 바꿈
/////////////////리스트를 맵으로 변환
        List<creditcard> acom = cd.stream().filter(a -> a.getName().equals("a")).toList();
        System.out.println(acom);

        Map<String, Integer> cardmap = new HashMap<>();
        cardmap = cd.stream().collect(Collectors.toMap(a -> a.getName(), a -> 1));

        System.out.println(cardmap);


    }


}

class creditcard {


    @Override
    public String toString() {
        return "creditcard{" +
                "name='" + name + '\'' +
                '}';
    }

    public int getLimit() {
        return limit;
    }

    public void setLimit(int limit) {
        this.limit = limit;
    }

    int limit;
    String name;


    creditcard(String name, int limit) {
        this.limit = limit;
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

관련글 더보기

댓글 영역