Search code examples
javaalphabetical-sort

Display of Language options should in series as displayed in list though user selects deselects random options?


please can anybody help me to overcome this.problem. Problem statement is :

I wrote some code for displaying languages of user selection from web page due to some check box's.Suppose user select two check box's for German and Urdu then I need to show on web page German,Urdu.Then after user again select another language option like Arabic then I need to show on web page like Arabic,German,Urdu.

Thanks advanced.

   knownLanguages ="German,Urdu,Arabic";  
   String userLanguages[] = knownLanguages.split(",");
    for (int i = 0; i < userLanguages.length; i++) {
      if (i == 0)
        knownLanguages1 += userLanguages[i];
      else
        knownLanguages1 += " , " + userLanguages[i];
    }
    List<String> list = new ArrayList<String>(Arrays.asList(knownLanguages1.split(" , ")));
    Collections.sort(list, ALPHABETICAL_ORDER);
    return knownLanguages1;
  }

  private static Comparator<String> ALPHABETICAL_ORDER = new Comparator<String>() {
    public int compare(String str1, String str2) {
      int res = String.CASE_INSENSITIVE_ORDER.compare(str1, str2);
      if (res == 0) {
        res = str1.compareTo(str2);
      }
      return res;
    }
  }; 

But this code don't give desired output.Please help me.


Solution

  • You don't need a custom comparator since all you're doing is alphabetical sorting.

    Following code should work for you:

    String knownLanguages ="German,Urdu,Arabic";
    // get a list of languages from above string using String#split
    List<String> langList = Arrays.asList(knownLanguages.split(","));
    // sort the resulting list
    Collections.sort(langList);
    // print it
    System.out.println(langList);
    // OUTPUT: [Arabic, German, Urdu]