>

우리는 정직하게 이해하지 못하는 충돌 보고서를 받았으며, 그것이 좋은 질문인지는 확실하지 않지만 ... 아무것도 생각할 수 없습니다.

다음 코드가 있습니다 :

public class LeisureEventSelectedCategories {
    private Set<Long> ids = new TreeSet<>();
    public boolean contains(Long id) {
        if (id == null) {
            return false;
        }
        return ids.contains(id);
    }

라인 return ids.contains(id) 가있는 곳  다음 예외로 인해 충돌이 발생합니다.

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long
    at java.lang.Long.compareTo(Long.java)
    at java.util.TreeMap.find(TreeMap.java)
    at java.util.TreeMap.findByObject(TreeMap.java)
    at java.util.TreeMap.containsKey(TreeMap.java)
    at java.util.TreeSet.contains(TreeSet.java)
    at com.acme.b.a.d.a(LeisureEventSelectedCategories.java:50)

Long  나는 여기 Map<String, Long> 에서 수신 .

leisureEventSelectedCategories.contains(eventCategoryNameToEventId.get(categoryName)) || leisurePlaceSelectedCategories.contains(placeCategoryNameToPlaceId.get(categoryName)),

어디

Map<String, Long> placeCategoryNameToPlaceId = new LinkedHashMap<>();
Map<String, Long> eventCategoryNameToEventId = new LinkedHashMap<>();

TreeSet 교체는 제외   HashSet 와 함께  그리고 Collections.sort() 를 사용하여  필요한 곳,이 문제의 원인은 무엇이며 앞으로는 어떻게 피해야하나요?

수정 :

leisureEventSelectedCategories 의 값 이미지  서버에서 오는 모든 항목을 선택한 후 :

eventCategoryNameToPlaceId 의 값 이미지


  • 답변 # 1

    결국 우리는 그것을 LinkedHashSet<Long> 로 대체했습니다.  충돌이 사라졌습니다.

관련 자료

  • 이전 c# - IGrouping 에 'name'에 대한 정의가 없습니다
  • 다음 python - 계산을위한 공통 열이없는 두 개의 DataFrames 결합