>

나는 LinkedHashMap에서 전체 키 /값 쌍을 교체하려고하지만 작동하지 않는 것처럼 보입니다. 나는 ConcurrentModificationException을 얻고 있습니다. 주요 변경없이 동일한 위치에있는 키에 대해 전체 키 /값 쌍을 대체 할 수있는 방법이 있습니다.

나는 다음을 수행하려고 시도했다.

Map<String, String> testMap= new LinkedHashMap<String, String>();
    testMap.put("1", "One");
    testMap.put("2", "Two");
    testMap.put("3", "Three");
    testMap.put("4", "Four");
    testMap.put("5", "Five");
    testMap.put("6", "Six");
    /*
     * Removing an element from the Map.
     */
    Iterator<Entry<String, String>> iter= testMap.entrySet().iterator();
    while (iter.hasNext()) {
        Map.Entry<String, String> entry= (Map.Entry<String, String>) iter.next();
        System.out.print(entry.getKey() + "->" + entry.getValue() + "; ");
        if (entry.getKey().equals("1"))
            iter.remove(); //remove one entry (key/value) with key "1". Ok
        if (entry.getValue().equalsIgnoreCase("Two"))
            iter.remove(); //removing all entries (key/value) for value "Two". Ok
        if (entry.getKey().equals("3"))
            entry.setValue("Updated_Three"); //Updating value for key 3. Ok
        //Below how to now add a new key/value pair in my testMap at this position
        //without affecting any other order?
        if (entry.getKey().equals("4")) {
            iter.remove();
            //How to now add a new key/value pair at this position without affecting any
            //other order.
            //testMap.put("44", "FourFour"); //Removing entry with key 4 and adding a new
            //key/valuepair to hashmap. It throws ConcurrentModificationException. Any
            //other way to perform this?
        }
    }

왜요? LinkedHashMap의 반복 순서는 삽입 순서로 정의됩니다. 왜 그걸 깨고 싶니?

user2074212021-08-05 00:51:09

@ejp 내 UseCase는 이전 키 /값 쌍 엔트리가 제거 된 동일한 위치에 항목 (키 /값)을 추가하는 것입니다. 아이디어가 있으면 공유하십시오 ...

vinsinraw2021-08-05 00:51:09

@vins u는 CME가 TestMap.put ( "44", "fourfour")의 주석을 제거하면 CME를 얻을 것입니다. 실제로 나는 동일한 위치에서 키 /값을 교체하기 위해이 문장에 대한 대안적인 방법이 있는지 알고 싶었습니다.

vinsinraw2021-08-05 00:51:09

@Vins 아니오는 아닙니다. 내 쿼리는 "동일한 대체 된 위치에서 LinkedHashMap에서 전체 키 /값 쌍을 대체하는 방법"은 CME에 명시 적으로 초점을 맞추지 않았습니다. 나는지도 항목을 통해 횡단하는 동안 새로운 항목 (Kay /Value) 쌍이 순서로 일어날 수 있는지 여부를 알고 싶습니다.

vinsinraw2021-08-05 00:51:09

확인. 지금은 매우 분명합니다. 다른 데이터 구조를 사용하고 싶지 않습니다 (답변에서 제안 된 것처럼). 필요한 답변을 피하려면 질문에 언급해야합니다.

vinS2021-08-05 00:51:09
  • 이전 android - 서비스를 수동으로 중지하는 방법은 무엇입니까?
  • 다음 java - orgbouncycastleoperatoroperatorcreationexception - 서명자를 작성할 수 없음 : 서명 (제공자 : bc)에 대해 구성된 클래스를 찾을 수 없습니다