Java&Spring/Java

JAVA for , enhance for, Stream

sung.hyun.1204 2022. 11. 1. 12:36

for 문 부터 보자.

 

1. 기존 방식이다.

for(int i =0;i<friends.size();i++){
    if(friends_score.containsKey(friends.get(i).get(0))) {
        friends_score.put( friends.get(i).get(0),friends_score.get(friends.get(i).get(0)) + 10);
    }
    else if(friends_score.containsKey(friends.get(i).get(1))) {
        friends_score.put( friends.get(i).get(1),friends_score.get(friends.get(i).get(1)) + 10);
    }
}

2. enhanced for 문 으로 변경하면 다음과 같다 , python 과 유사하다.

for (List<String> friend : friends) {
    if (friends_score.containsKey(friend.get(0))) {
        friends_score.put(friend.get(0), friends_score.get(friend.get(0)) + 10);
    } else if (friends_score.containsKey(friend.get(1))) {
        friends_score.put(friend.get(1), friends_score.get(friend.get(1)) + 10);
    }
}

 

 

 

 

1. enhanced for 문이다

for (List<String> friend : friends)
    {
    if(friend.get(0).equals(user)) {
        friends_list.add(friend.get(1)); 
        friends.remove(friend);
    }
    if(friend.get(1).equals(user)){
        friends_list.add(friend.get(0));
        friends.remove(friend);
    };
}
friends_list.remove(user);

2.

for (int i =  0 ; i<friends.size();i++)
{
    if(friends.get(i).get(0).equals(user)) {
        friends_list.add(friends.get(i).get(1)); // freinds inside there is
        // 이름들 목록에서 user 포함 리스트 제거
        friends.remove(friends.get(i));
    }
    if(friends.get(i).get(1).equals(user)){
        friends_list.add(friends.get(i).get(0));
        friends.remove(friends.get(i));
    };
}
friends_list.remove(user);

 

 

3 .Stream 을 이용하는 방식이다.

 

다음과 같이 value 는 내림, key는 올림 하고싶다.

A 25
C 17
B 15
E 15
D 10
Map<String, Integer> map = Map.of("A", 25, "D", 10, "B", 15, "E", 15, "C", 17);
Map<String, Integer> result = map.entrySet().stream()
    .sorted(Comparator.<Map.Entry<String, Integer>>comparingInt(Map.Entry::getValue)
       .reversed().thenComparing(Map.Entry::getKey))
    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, 
         (a,b)->b, LinkedHashMap::new));
System.out.println(result);