HashSet 本身无序。 就算有序也只是自然排序。即按 字母排。
解决把法: 
自己写一个了                              //这个后面不太记得,你点一下。  在网吧实在没办法测试。
public class MyString implements java.util.Complatorable {
    String str = "";
    public MyString(String str ){
           this.str = str;
    }
    //重写里面的方法。
     
}将你集合中的字符传都封装成这个对象
然后放到 TreeSet 中就会自动排序的拉。

解决方案 »

  1.   

    HashSet 内部的元素是没有顺序的应该使用List
            String[] a = {"A", "AB", "ABC", "ABCD", "ABCE", "ABD", "ABDE", "ABE", "AC", "ACD", "ACDE", "ACE", "AD", "ADE", "AE", "B", "BC", "BCD", "BCDE", "BCE", "BD", "BDE", "BE", "C", "CD", "CDE", "CE", "D", "DE", "E"};
         List<String> list = new ArrayList<String>();
         for(int i=0;i<a.length;i++) {
         list.add(a[i]);
         }
         Collections.sort(list, new Comparator<String>() {
         public int compare(String o1, String o2) {
         if(o1==null) {
         return -1;
         }
         if(o2==null) {
         return 1;
         }
        
         return (o1.length()-o2.length());
         }
         });
        
         System.out.println(list);
      

  2.   

    HashSet是无序的,如果你要排序的set那么用TreeSet. 
      

  3.   

        把两个程序块组合1. import java.util.*;
    public class Test {
        
    public static void divide(String str, ArrayList list) {
    for (int i = 0; i  < str.length(); i++) {
    String str2;
    if (i == 0)
    str2 = str.substring(i + 1);
    else if (i  < str.length() - 1)
    str2 = str.substring(0, i) + str.substring(i + 1);
    else
    str2 = str.substring(0, i);
    list.add(str2);
    if (str2.length() > 1)
    divide(str2, list);
    }
    }
    }
    2.import java.util.*; 
    public class ck {
           public static void main(String[] args) { 
     String[] a = {"A", "AB", "ABC", "ABCD", "ABCE", "ABD", "ABDE", "ABE", "AC", "ACD", "ACDE", "ACE", "AD", "ADE", "AE", "B", "BC", "BCD", "BCDE", "BCE", "BD", "BDE", "BE", "C", "CD", "CDE", "CE", "D", "DE", "E"}; 
         List <String> list = new ArrayList <String>();
         for(int i=0;i <a.length;i++) {
         list.add(a[i]);
         }
         Collections.sort(list, new Comparator <String>(){
         public int compare(String o1, String o2) {
         if(o1==null) {
         return -1;
         }
         if(o2==null) {
         return 1;
         }
        
         return (o2.length()-o1.length());
         }
         });
        
         System.out.println(list); 
    }
    }在JSP下调用包  例如<%@ page import="java.util.*" %>
    <%@ page import="org.Test" %>
    <%
    String stuMessage ="ABCDE";........在变量定义 
    HashSet list=new HashSet(); 
    Test test=new Test();
    test.divide(stuMessage,list);
    out.println(list);%>
    程序块1实现
    [D, E, A, B, C, ABDE, ACE, ACD, BC, BD, BDE, BE, DE, CDE, ABCD, ABCE, BCDE, ABD, BCD, AC, ABC, AD, AB, CE, ACDE, AE, BCE, CD, ABE, ADE] 调用程序块2 实现   (排序)  .  从多到小
    [ABCD, ABCE, ABDE, ACDE, BCDE, ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE, CDE,
     AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, A, B, C, D, E]
      

  4.   

      String[] a = {"A", "AB", "ABC", "ABCD", "ABCE", "ABD", "ABDE", "ABE", "AC", "ACD", "ACDE", "ACE", "AD", "ADE", "AE", "B", "BC", "BCD", "BCDE", "BCE", "BD", "BDE", "BE", "C", "CD", "CDE", "CE", "D", "DE", "E"}; 
         List <String> list = new ArrayList <String>(); 
         for(int i=0;i <a.length;i++) { 
         list.add(a[i]); 
         } 
         Collections.sort(list, new Comparator <String>() { 
         public int compare(String o1, String o2) { 
         if(o1==null) { 
         return -1; 
         } 
         if(o2==null) { 
         return 1; 
         } 
         
         return (o1.length()-o2.length()); 
         } 
         }); 
         
         System.out.println(list); 
      

  5.   

    //set是无序的,用list
    package backgrounp.reminder;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;public class JHashSet {
    public static void main(String[] args) {
    Set<String> set = new HashSet<String>();
    Set<String> set2 = new HashSet<String>();
    Set<String> set3 = new HashSet<String>();
    List<String> list = new ArrayList<String>();
    List<String> list2 = new ArrayList<String>();
    Map map = new HashMap();
    Map map2 = new HashMap();
    set.add("C");
    set.add("BC");
    set.add("AC");
    set.add("ABDE");
    set.add("BEDE");
    set.add("ADE");
    for (String str : set) {
    map.put(str, str.length());
    }
    map2 = sortByValue(map);
    System.out.println(map2);
    set2 = map2.keySet();
    for (String str : set2) {
    list.add(str);
    }
    for (int i = list.size() - 1; i > 0; i--) {
    list2.add(list.get(i));
    }
    System.out.println(list2);
    } static Map sortByValue(Map map) {
    List list = new LinkedList(map.entrySet());
    Collections.sort(list, new Comparator() {
    public int compare(Object o1, Object o2) {
    return ((Comparable) ((Map.Entry) (o1)).getValue())
    .compareTo(((Map.Entry) (o2)).getValue());
    }
    }); Map result = new LinkedHashMap();
    for (Iterator it = list.iterator(); it.hasNext();) {
    Map.Entry entry = (Map.Entry) it.next();
    result.put(entry.getKey(), entry.getValue());
    }
    return result;
    }
    }
      

  6.   

    怎么处理前面有人都说了,纠正一下命名习惯,HashSet 怎么命名为list呢,很误导人的。