맵에 값이 있는지 확인하고 키를 반환하거나 예외를 throw합니다.

v1shnu

Java 8 스트림을 사용하여 문자열의 모든 고유 문자가지도에 있는지 확인하고 해당 키를 목록으로 반환하려고합니다. 다음과 같이 Stream을 사용하여 할 수 있습니다.

...
map.put("Apple",'a');
map.put("Ball",'b');
map.put("Cat",'c');
map.put("Doll",'d');

String format = "aabbbc";

List<String> list = format.chars().mapToObj(i -> (char) i).distinct()
                        .map(c -> map.entrySet().stream()
                                .filter(entry -> entry.getValue() == c).findFirst().get().getKey())
                        .collect(Collectors.toList());

그래서 이것은 나를 반환합니다 ["Apple","Ball","Cat"]. 그러나 캐릭터가 맵에 없을 수도있는 입력이있을 것입니다. 예를 들면 :format = "aabbbczzzzz"

이 경우 맵에서 캐릭터를 찾을 수 없다는 예외를 던지고 싶습니다. 그래서 나는 이것을했다

List<String> list = format.chars()
    .mapToObj(i -> (char) i)
    .distinct()
    .map(c -> map.entrySet().stream()
        .filter(entry -> entry.getValue() == c)
        .findFirst()
        .orElseThrow(() -> new Exception("Character not found in Map")))
    .collect(Collectors.toList());

그러나 Java는 컴파일을 허용하지 않습니다. 내 요구 사항을 처리하는 방법을 도와주세요.

https://ideone.com/Kb2WoN

user7

당신이에 전달 람다 표현식 mapA는 Function당신이 체크 예외를 발생시키지 않는다. 의 계약은 다음 Functions과 같습니다.

public interface Function<T, R> {
     R apply(T t);
}

type 값을 취하고 type 값을 T반환합니다 R. 의 구현에서 확인 된 예외를 throw 할 수 없습니다 apply.

확인되지 않은 예외가 발생하도록 코드를 변경할 수 있습니다.

또한 map다른 답변에 명시된 바와 같이 맵 키에 매핑 하는 호출 이 누락되었습니다.

List<String> list = format.chars().mapToObj(c -> (char) c).distinct()
              .map(c -> map.entrySet().stream()
                      .filter(entry -> entry.getValue() == c)
                      .map(Map.Entry::getKey) //extract the map key
                      .findFirst()
                      .orElseThrow(() -> new RuntimeException("Character not found in Map"))) 
              .collect(Collectors.toList());

RuntimeException을 확장하고이를 throw하는 사용자 정의 도메인 예외를 생성 할 수도 있습니다.

참조 :

예외를 발생시키는 Java 8 Lambda 함수?

Java Dev Central의 스트림에서 확인 된 예외 발생


참고 : 문자열의 각 문자에 대해 맵을 반복합니다. 성능을 향상시키기 위해 O(1)캐릭터가 맵에있는 경우 조회 ( )하고 값을 반환 할 수 있도록 리버스 맵을 만들 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

값을 반환하거나 예외를 throw해야합니까 ....?

분류에서Dev

Volley는 VolleyError를 반환하지 않거나 예외가있는 이유를 설명하지 않습니다.

분류에서Dev

값이 간격 내에 있는지 확인하고 간격 범주를 반환합니다.

분류에서Dev

예외를 throw하지 않고 Java 용 AWS 람다에 오류 신호 수있는 방법이 있습니까?

분류에서Dev

저장하기 전에 확인하고 확인이 끝난 예외를 throw하는 방법

분류에서Dev

IMongoCollection <T> .InsertOneAsync (...)가 값을 반환하지 않거나 예외를 throw하는 경우 오류를 잡는 방법 (문서에 따르면)?

분류에서Dev

Django : 목록에 모델 인스턴스가 있는지 확인하거나 최근에 추가 된 데이터를 반환합니다.

분류에서Dev

AutoMapperConfigurationException : 속성 이름을 표시하지 않고 AutoMapper에서 예외를 throw합니다.

분류에서Dev

JS Map에 값이 포함되어 있는지 확인하고 키를 반환하도록 할 수 있습니까?

분류에서Dev

값이 배열에 있는지 확인하고 입력 데이터를 업데이트하거나 푸시합니다.

분류에서Dev

예외를 처리하거나 값을 반환하는 더 나은 방법

분류에서Dev

값 목록이 다른 중첩 목록 파이썬에 있는지 확인하고 일치를 반환합니다.

분류에서Dev

, 다른 던져 예외를 키가 존재하고 값이 null가 아닌 경우, 맵에 넣어

분류에서Dev

여기서 무엇을 하시겠습니까? null을 반환하거나 예외를 throw합니다 (프레임 워크 디자인 가이드).

분류에서Dev

알 수없는 깊이 중첩 맵이 키 존재를 확인하고 값을 가져옵니다.

분류에서Dev

쌍으로 구성된 벡터에서 첫 번째 값이 X와 같고 두 번째 값을 반환하는 쌍을 찾거나 Y를 반환합니다.

분류에서Dev

가라테 : 고양이의 새끼 고양이 목록에 텍스트가 포함되어 있는지 확인하면 모든 키-값이 일치하지 않음 오류를 반환합니다.

분류에서Dev

목록에서 셀이 다음으로 시작하는 키워드를 확인하고 일치하는 키워드를 반환합니다.

분류에서Dev

예외를 던지거나 null을 반환하는 것이 더 Java-thonic입니까?

분류에서Dev

javaFx를 사용하고 있으며 점이 경계 상자 안에 있는지 확인하려고합니다.

분류에서Dev

clj-schema를 사용하여 맵 시퀀스에 지정된 키에 대한 고유 값이 있는지 확인

분류에서Dev

해시에 "O"가 포함 된 키가 있는지 확인한 다음 "O"를 포함하는 키 값을 반환하려면 어떻게해야합니까?

분류에서Dev

값을 확인하고 예외를 던지는 위치

분류에서Dev

두 개의 MYSQL 데이터베이스 테이블을 결합하고 두 번째 테이블에 레코드가 없는지 확인한 다음 FALSE를 반환하고 열에 특정 값이 있으면 FALSE도 반환합니다.

분류에서Dev

사전 목록에서 중복 키를 제거하고 값이 최대 인 키-값만 유지합니다.

분류에서Dev

"ID로 찾기"메소드에 대해 예외를 던지거나 옵션을 반환하는 것이 더 낫습니까?

분류에서Dev

하위 목록에 숫자가 있는지 확인하고 파이썬에서 하위 목록의 인덱스를 반환합니다.

분류에서Dev

jq를 사용하여 값이 0인지 확인하고 호출하는 쉘 스크립트에 0을 반환합니다.

분류에서Dev

jq를 사용하여 값이 0인지 확인하고 호출하는 쉘 스크립트에 0을 반환합니다.

Related 관련 기사

  1. 1

    값을 반환하거나 예외를 throw해야합니까 ....?

  2. 2

    Volley는 VolleyError를 반환하지 않거나 예외가있는 이유를 설명하지 않습니다.

  3. 3

    값이 간격 내에 있는지 확인하고 간격 범주를 반환합니다.

  4. 4

    예외를 throw하지 않고 Java 용 AWS 람다에 오류 신호 수있는 방법이 있습니까?

  5. 5

    저장하기 전에 확인하고 확인이 끝난 예외를 throw하는 방법

  6. 6

    IMongoCollection <T> .InsertOneAsync (...)가 값을 반환하지 않거나 예외를 throw하는 경우 오류를 잡는 방법 (문서에 따르면)?

  7. 7

    Django : 목록에 모델 인스턴스가 있는지 확인하거나 최근에 추가 된 데이터를 반환합니다.

  8. 8

    AutoMapperConfigurationException : 속성 이름을 표시하지 않고 AutoMapper에서 예외를 throw합니다.

  9. 9

    JS Map에 값이 포함되어 있는지 확인하고 키를 반환하도록 할 수 있습니까?

  10. 10

    값이 배열에 있는지 확인하고 입력 데이터를 업데이트하거나 푸시합니다.

  11. 11

    예외를 처리하거나 값을 반환하는 더 나은 방법

  12. 12

    값 목록이 다른 중첩 목록 파이썬에 있는지 확인하고 일치를 반환합니다.

  13. 13

    , 다른 던져 예외를 키가 존재하고 값이 null가 아닌 경우, 맵에 넣어

  14. 14

    여기서 무엇을 하시겠습니까? null을 반환하거나 예외를 throw합니다 (프레임 워크 디자인 가이드).

  15. 15

    알 수없는 깊이 중첩 맵이 키 존재를 확인하고 값을 가져옵니다.

  16. 16

    쌍으로 구성된 벡터에서 첫 번째 값이 X와 같고 두 번째 값을 반환하는 쌍을 찾거나 Y를 반환합니다.

  17. 17

    가라테 : 고양이의 새끼 고양이 목록에 텍스트가 포함되어 있는지 확인하면 모든 키-값이 일치하지 않음 오류를 반환합니다.

  18. 18

    목록에서 셀이 다음으로 시작하는 키워드를 확인하고 일치하는 키워드를 반환합니다.

  19. 19

    예외를 던지거나 null을 반환하는 것이 더 Java-thonic입니까?

  20. 20

    javaFx를 사용하고 있으며 점이 경계 상자 안에 있는지 확인하려고합니다.

  21. 21

    clj-schema를 사용하여 맵 시퀀스에 지정된 키에 대한 고유 값이 있는지 확인

  22. 22

    해시에 "O"가 포함 된 키가 있는지 확인한 다음 "O"를 포함하는 키 값을 반환하려면 어떻게해야합니까?

  23. 23

    값을 확인하고 예외를 던지는 위치

  24. 24

    두 개의 MYSQL 데이터베이스 테이블을 결합하고 두 번째 테이블에 레코드가 없는지 확인한 다음 FALSE를 반환하고 열에 특정 값이 있으면 FALSE도 반환합니다.

  25. 25

    사전 목록에서 중복 키를 제거하고 값이 최대 인 키-값만 유지합니다.

  26. 26

    "ID로 찾기"메소드에 대해 예외를 던지거나 옵션을 반환하는 것이 더 낫습니까?

  27. 27

    하위 목록에 숫자가 있는지 확인하고 파이썬에서 하위 목록의 인덱스를 반환합니다.

  28. 28

    jq를 사용하여 값이 0인지 확인하고 호출하는 쉘 스크립트에 0을 반환합니다.

  29. 29

    jq를 사용하여 값이 0인지 확인하고 호출하는 쉘 스크립트에 0을 반환합니다.

뜨겁다태그

보관