루프 대신 HashMap을 사용해야 하는 경우

많은 프로그래머는 HashMap 데이터 구조를 고려할 수 있는 루프 또는 필터를 사용합니다.

루프를 사용하여 ID로 사용자 찾기




let userIdToBeSearched = 103;
const users = [
    {id: 101, name: "Josh"},
    {id: 102, name: "Mosh"},
    {id: 103, name: "Eli"},
    {id: 104, name: "Jad"},
    {id: 105, name: "Susan"}
];

let user = null;
for (let i = 0; i < users.length; i++) {
    if (users[i].id === userIdToBeSearched) {
        user = users[i];
        break;
    }
}

if (user) {
    console.log("User Found: ", user);
} else {
    console.log("user does not exit with id: ", userIdToBeSearched);
}


위 솔루션의 시간 복잡도는 O(n)이며 여기서 n은 사용자 수를 나타냅니다. 사용자가 1,000명이라면 최악의 경우 모든 사용자를 검색하여 일치하는 항목을 찾습니다.
Considering user id will be unique for each user, this is a good indication to use a HashMap instead of a loop since all keys in the Map are Unique.

지도를 사용하여 ID로 사용자 찾기




let userIdToBeSearched = 103;
const users = new Map();
users.set(101, {id: 101, name: "Josh"});
users.set(102, {id: 102, name: "Mosh"});
users.set(103, {id: 103, name: "Eli"});
users.set(104, {id: 104, name: "Jad"});
users.set(105, {id: 105, name: "Susan"});

if(users.has(userIdToBeSearched)){
  console.log("User Found: ", users.get(userIdToBeSearched));
}
else {
  console.log("user does not exit with id: ", userIdToBeSearched);
}


지도를 사용할 때 사용자를 찾는 데 일정한 시간 O(1)이 걸립니다! 모두 훌륭하지만 배열에서 HashMap을 구성하려면 여전히 O(n) 시간이 필요합니다.

결론적으로 id와 같은 고유한 필드를 기반으로 자주 검색할 때 Map을 사용하십시오. 이름과 같이 고유하지 않은 필드를 기반으로 검색하는 경우 지도를 사용할 수 없습니다.

읽어 주셔서 감사합니다! HashMaps의 실제 사용 사례에 대해 논의한 파트 2를 확인하십시오.

좋은 웹페이지 즐겨찾기