کدام یک کار بیشتری دارد؟ نام کارآگاهی که لیست کارهایش طولانی تر است را چاپ کنید. شرلوک است یا پوآرو؟
نرگس علاقهی زیادی به بهینه بودن برنامهها دارد. او میداند که استفاده از hash برای نگهداری دادهها در برخی مواقع نه تنها کمکی به افزایش پرفورمنس نمیکند، بلکه پرفورمنس برنامه را کاهش میدهد. یلدا که حرف نرگس را قبول ندارد، از او درخواست کدی کرده است تا میزان hash collision ها را ببیند. نرگس نیز این کار را به شما محول کرده است.
در این سؤال، یک HashSet یا HashMap به شما داده میشود. شما باید تعداد یکتای hash code های مقادیر موجود در HashSet یا کلیدهای موجود در HashMap را محاسبه کرده و برگردانید.
public static <T> int countOfUniqueHashCodes(HashSet<T> set)
این متد را طوری پیادهسازی کنید که با دریافت یک HashSet، تعداد یکتای hash code های مقادیر موجود در آن را برگرداند.
public static <K, V> int countOfUniqueHashCodes(HashMap<K, V> map)
این متد را طوری پیادهسازی کنید که با دریافت یک HashMap، تعداد یکتای hash code های کلیدهای موجود در آن را برگرداند.
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("c#c#c#c#c#c#bBc#c#c#c#bBc#");
set.add("abcd");
set.add("c#c#c#c#c#c#bBc#c#c#c#c#aa");
set.add("1234");
set.add("c#c#c#c#c#c#bBc#c#c#c#c#bB");
System.out.println(countOfUniqueHashCodes(set)); // 3
HashMap<String, Integer> map = new HashMap<>();
map.put("c#c#c#c#c#c#c#aaaaaaaabBbB", 14);
map.put("c#c#c#c#c#c#c#aaaaaaaac#c#", 12);
map.put("c#c#c#c#c#c#c#aaaaaaaac#cc", 16);
System.out.println(countOfUniqueHashCodes(map)); // 2
}
3
2