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는 임의 액세스를 제공하고 요소 액세스에 더 효율적이지만 일반적으로 요소 삽입 및 삭제 속도가 느립니다.
'Nice programing' 카테고리의 다른 글
QPushButton에 이미지를 설정하는 방법은 무엇입니까? (0) | 2020.11.01 |
---|---|
크롬에서 이미지의 대체 텍스트를 표시하는 방법 (0) | 2020.11.01 |
Scipy.signal.butter로 대역 통과 버터 워스 필터를 구현하는 방법 (0) | 2020.11.01 |
react-redux 컨테이너 구성 요소에 소품 전달 (0) | 2020.11.01 |
"Windows SDK 버전 8.1"을 찾을 수 없다는 오류를 해결하는 방법은 무엇입니까? (0) | 2020.11.01 |