Map - ajuda na ordenação

ola pessoal

estava fazendo um metodo que cria um select, fiz, e ate o momento ela funciona “bem”, a nao ser por um problema, ela nao esta ordenada.
queria a ajuda de vcs para conseguir fazer esta ordenacao.
ja dei uma procurada, tentei usar o SortedMap, mas nao deu muito certo

segue a classe

package br.com.krusst.util.web;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class InputForm {
	public static void criaSelecMenu(	javax.servlet.jsp.JspWriter out,
									String nomeCampo, 
									Map<String,String> lista, 
									String selectedValor,
									String nomeEstilo){ 
		  try{ 
			  //se nomeEstilo estiver preenchido entao adiciono ele como classe de estilo
			  if(nomeEstilo.length()>0){nomeEstilo = " class=\"" + nomeEstilo + "\" ";}
			  //pego os valores da chave da lista
			  Set chaves = lista.keySet();
			  Iterator i = chaves.iterator();
			  //escrevo o inicio do selecMenu com o NAME e ID
			 out.println("	<select name=\"" + nomeCampo + "\" id=\"" + nomeCampo + "\""+ nomeEstilo +">");
			 //out.println("<select>");	  		

			  //valor da chave,ID do select
			  String chave = "";
			  //valor da descricao do select
			  String descricao = "";
			  //marca o item como selecionado
			  String selectedStatus = "";
			    	
	  			//loop varrendo todos os valores de i		    	
			    while(i.hasNext()){
			    	//pego o valor da chave atual dentro do loop
			    	chave = i.next().toString();
			    	//pego o valor da descricao da chage
			    	descricao = lista.get(chave).toString();
			    	
			    	//verifico se o selectedValor é igual ao valor da chave(ID), se for, marco como selecionado, do cantrario, o desmarco
				    if(selectedValor.equals(chave)){selectedStatus = " selected ";}else{selectedStatus = "";}
				    
				    //escrevo o selectItem			    
			    	out.println("	<option value=\""+chave+"\"" + selectedStatus + ">"+descricao+"</option>");		    	
			    	
			    }
	  		//escrevo o fim do selecMenu
		    out.println("</select>");

		  }catch(java.io.IOException e1){ 
		   System.out.println(e1); 
		   } 
		} 
}

eu tenho que ordenar pela descricao

ser alguem puder me ajudar, agradeço

abs
T+

Dá um Collections.sort nas chaves.

Usa uma TreeMap

mas se eu der um collections.sort ele nas chaves, ele nao vai organizar pelas chaves?
o problema de eu fazer isso é que ele vai ordenar pelas IDs, e eu preciso pela descricao

obs.: desculpe se estiver falando besteiras, mas nao conheco muito dessa parte

e Foxlol

mas vou fazer os teste e retorno

abs
T+

Utiliza o TreeMap e adiciona no value o seu identificador, e na key a descricao do objeto.
Pronto!.