java - Why is uppercase not sorted correctly here? -


i attempting sort list<string> of items. here's unsorted list, , how it's being sorted:

unsorted: [pineapple, pineapple, apple, apricot, banana, mango, mango, melon, peach] sorted: [apple, apricot, banana, mango, mango, melon, peach, pineapple, pineapple] 

how come mango not placed before mango, , why pineapple before pineapple?

here code:

import java.util.*; import java.lang.*; import java.io.*;  class test {     public static void main (string[] args) throws java.lang.exception {         list<string> fruits = new arraylist<string>(7);          fruits.add("pineapple");         fruits.add("pineapple");         fruits.add("apple");         fruits.add("apricot");         fruits.add("banana");         fruits.add("mango");         fruits.add("mango");         fruits.add("melon");                 fruits.add("peach");          system.out.println("unsorted: " + fruits);          collections.sort(fruits, new comparator<string>() {             @override             public int compare(string o1, string o2) {                               return o1.comparetoignorecase(o2);             }         });          system.out.println("sorted: " + fruits);     } } 

you used comparetoignorecase() comparison method, compared 'pineapple' , 'pineapple' 0 (same string), leaving them in order found in when sorting since collections.sort guarantees equal elements won't reordered. in other words, 'pineapple' came before 'pineapple', they're equal strings due ignorecase, 'pineapple' stay in front of 'pineapple'.

since unsorted list has 'pineapple' before 'pineapple', comparison put them sorted list in same order. these same rules applied 'mango' , 'mango'. comparison method you're looking compareto() take upper case , lower case letters account.


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -