Nice programing

LinkedList 또는 ArrayList를 통해 또는 그 반대로 HashMap을 사용하는 경우

nicepro 2020. 11. 1. 18:42
반응형

LinkedList 또는 ArrayList를 통해 또는 그 반대로 HashMap을 사용하는 경우


요소의 수에 관계없이 add, remove 작업에서 ArrayList 또는 LinkedList보다 훨씬 효율적이지만 항상 HashMap을 사용할 수없는 이유는 무엇입니까?

나는 그것을 봤고 몇 가지 이유를 찾았지만 HashMap을 사용하는 데는 항상 장점이 ​​남아있는 해결 방법이있었습니다.


목록은 요소의 순차적 순서를 나타냅니다. 맵은 키 / 값 쌍의 모음을 나타내는 데 사용됩니다.

지도를 목록으로 사용할 수 있지만 그렇게하면 몇 가지 확실한 단점이 있습니다.

순서 유지 : -정의에 따라 목록이 정렬됩니다. 항목을 추가 한 다음 항목을 삽입 한 순서대로 목록을 다시 반복 할 수 있습니다. HashMap에 항목을 추가 할 때 항목을 넣은 순서대로 항목을 검색 할 수 있다는 보장은 없습니다. LinkedHashMap과 같이 순서를 유지하는 HashMap의 하위 클래스가 있지만 일반적으로 Map에서는 순서가 보장되지 않습니다.

키 / 값 의미 : -맵의 목적은 나중에 항목을 검색하는 데 사용할 수있는 키를 기반으로 항목을 저장하는 것입니다. 유사한 기능은 키가 목록의 위치에있는 제한된 경우에만 목록을 사용하여 얻을 수 있습니다.

코드 가독성 다음 예제를 고려하십시오.

    // Adding to a List
    list.add(myObject);         // adds to the end of the list
    map.put(myKey, myObject);   // sure, you can do this, but what is myKey?
    map.put("1", myObject);     // you could use the position as a key but why?

    // Iterating through the items
    for (Object o : myList)           // nice and easy
    for (Object o : myMap.values())   // more code and the order is not guaranteed

컬렉션 기능 컬렉션 클래스를 통해 목록에 몇 가지 훌륭한 유틸리티 함수를 사용할 수 있습니다. 예를 들어 ...

    // Randomize the list
    Collections.shuffle(myList);

    // Sort the list
    Collections.sort(myList, myComparator);  

도움이 되었기를 바랍니다,


목록과 맵은 서로 다른 데이터 구조입니다. 맵은 키를 값과 연결하려는 경우에 사용되며 목록은 정렬 된 컬렉션입니다.

Map은 Java Collection Framework의 인터페이스이며 HashMap은 Map 인터페이스의 한 구현입니다. HashMap은 키를 기반으로 값을 찾고 키를 기반으로 값을 삽입 및 삭제하는 데 효율적입니다. HashMap의 항목은 정렬되지 않습니다.

ArrayList 및 LinkedList는 List 인터페이스의 구현입니다. LinkedList는 순차 액세스를 제공하며 일반적으로 목록에서 요소를 삽입하고 삭제하는 데 더 효율적이지만 목록의 요소에 액세스하는 데는 덜 효율적입니다. ArrayList는 임의 액세스를 제공하고 요소 액세스에 더 효율적이지만 일반적으로 요소 삽입 및 삭제 속도가 느립니다.

참고 URL : https://stackoverflow.com/questions/7975802/when-to-use-hashmap-over-linkedlist-or-arraylist-and-vice-versa

반응형