मैं शब्द आवृत्ति (यानी, मूल्य के आधार पर) के आधार पर मानचित्र को सॉर्ट करने का प्रयास कर रहा हूं। इसके लिए मैंने तुलनित्र को ओवरराइड कर दिया है और TreeMap
पर पास किया है, लेकिन मुझे यह अजीब आउटपुट मिल रहा है।मूल्य के आधार पर मानचित्र को सॉर्ट करते समय, कुछ मान गुम हैं। इस अजीब व्यवहार का कारण क्या है?
public class WordFrequency {
public static String sentence = "one three two two three three four four four";
public static Map<String, Integer> map;
public static void main(String[] args) {
map = new HashMap<>();
String[] words = sentence.split("\\s");
for (String word : words) {
Integer count = map.get(word);
if (count == null) {
count = 1;
} else {
++count;
}
map.put(word, count);
}
Comparator<String> myComparator = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (map.get(s1) < map.get(s2)) {
return -1;
} else if (map.get(s1) > map.get(s2)) {
return 1;
} else {
return 0;
}
}
};
SortedMap<String, Integer> sortedMap = new TreeMap<String, Integer>(myComparator);
System.out.println("Before sorting: " + map);
sortedMap.putAll(map);
System.out.println("After Sorting based on value:" + sortedMap);
}
}
आउटपुट:
Before sorting: {two=2, one=1, three=3, four=3}
After sorting based on value:{one=1, two=2, three=3}
अपेक्षित आउटपुट:
{one=1, two=2, four=3,three=3}
क्या इसके बारे में अजीब है? –
संभवतः ट्री-मैप does not को अनुमति देने के डुप्लिकेट –
@SotiriosDelimanolis चार = 3 –