본문 바로가기

JAVA

[JAVA] Map.Entry를 이용한 HashMap 정렬

반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        Member member1 = new Member("park", 1);
        Member member2 = new Member("kim", 2);
        Member member3 = new Member("elle", 3);
        Member member4 = new Member("choi", 4);
        Member member5 = new Member("bake", 5);

        Order order1 = new Order("kimchi", 10000, 2);
        Order order2 = new Order("a", 10, 2);
        Order order3 = new Order("k", 500, 2);
        Order order4 = new Order("i", 5000, 2);

        HashMap<Member, Order> hashMap = new HashMap<>();
        hashMap.put(member1,order1);
        hashMap.put(member2,order2);
        hashMap.put(member3,order3);
        hashMap.put(member4,order4);

        // 오름차순
        List<Map.Entry<Member, Order>> entryList = new ArrayList<>(hashMap.entrySet());
        entryList.sort(Comparator.comparingInt(entry-> entry.getValue().price));
        
        // 내림차순
        List<Map.Entry<Member,Order>> sortedList = hashMap.entrySet()
                .stream()
                .sorted((e1, e2) -> Integer.compare(e2.getValue().price, e1.getValue().price))
                .toList();

        for (int i = 0; i < sortedList.size(); i++) {
            System.out.println(sortedList.get(i).getKey().getName());
            System.out.println(sortedList.get(i).getKey().name);

            System.out.println(sortedList.get(i).getValue().price);
        }



    }
}
class Member {

    String name;
    int memberId;

    public Member(String name, int memberId) {
        this.name = name;
        this.memberId = memberId;
    }

    public String getName() {
        return name;
    }

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

    public int getMemberId() {
        return memberId;
    }

    public void setMemberId(int memberId) {
        this.memberId = memberId;
    }
}

class Order {

    String product;
    int price;
    int quantity;

    public Order(String product, int price, int quantity) {
        this.product = product;
        this.price = price;
        this.quantity = quantity;
    }

    public String getProduct() {
        return product;
    }

    public void setProduct(String product) {
        this.product = product;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
}
반응형

'JAVA' 카테고리의 다른 글

[Java] 에러, 예외 정리하기  (1) 2024.11.14