同学给了个单词表说让给重新排个序 要求是 :在一组单词中 每个单词的首字母要不同 ,手动太慢了想写个程序 我能想到的最笨的办法就是把单词表按首字母分成了26组 每个组作为一个文件 然后做个循环 每次从一个文件组中读一个单词放到一个新的文件中 ,然后就是做的时候发现依次读取文件搞不太明白 ,把文件作为一个数组该怎么操作不太会 ,知道的朋友说一下 或者有好的实现方法也说一下 有程序更好 呵呵 谢谢大家了!

解决方案 »

  1.   

    文件不大的话,一起读进来,用split()分割成数组再操作
      

  2.   

    自己写个类  实现Comparator <Object>接口
    自己在public int compare(Object o1, Object o2) {
         取单词首字母比较
    }
     将所有的要排序的单词放到list里面
    调用Collections.sort(list,);
    要倒序排在 reverse一下就OK了
      

  3.   

    因为他给的单词表是类似于这样的 :
    absurd a.荒谬的,荒诞的,荒唐可笑的;不合理的
    academic a.学院的,大学的;学术性的;理论的
    accelerate v.使加速,使增速,促进 vi.加快,增加
    accessory n.附件,附属品;(为全套衣服增加美感的)服饰
    accidental a.偶然的;意外的;无意中的
    acclaim v.向…欢呼,公认 n.欢呼,喝彩,称赞
     不是单纯只有单词 ,所以感到有点难搞 ,上面说的那些方法对于这种情况能不能用 
      

  4.   

    给你我以前做过的例子,给你参考一下
    public class SortUtil {    /**
         * 对PO对象列表进行排序.
         *
         * @param list
         *          List       PO对象列表
         * @param attr
         *          String     用户属性
         * @param reverseOrder
         *          boolean    true表示降序,false表示升序
         *
         * @return
         *          List PO对象列表
         */
        public static List sort(List list,
                String attr,
                boolean reverseOrder) {
            if (reverseOrder) { // 降序
                Comparator comp = Collections.reverseOrder(new POComparator(attr));
                Collections.sort(list, comp);
            } else {
                Collections.sort(list, new POComparator(attr));
            }
            return list;
        }
    }public class POComparator implements Comparator {    /**
         * 排序属性,比如uidaleph.
         */
        private String sorkIndex = "";    /**
         *
         * @param sorkIndex.
         */
        public POComparator(String sorkIndex) {
            this.sorkIndex = sorkIndex;
        }    /**
         *
         * @param o1
         *          PO the first object to be compared.
         * @param o2
         *          PO the second object to be compared.
         * @return
         *         a negative integer, zero, or a positive integer as the
         * first argument is less than, equal to, or greater than the
         *second.
         *
         */
        public int compare(Object o1, Object o2) {
            if (o1 instanceof PO) {
                PO p1 = (PO) o1;
                PO p2 = (PO) o2;
                return ((String) p1.get(sorkIndex)).compareTo((String) p2.get(
                        sorkIndex));
            } else if (o1 instanceof Hashtable) {
                Hashtable p1 = (Hashtable) o1;
                Hashtable p2 = (Hashtable) o2;
                return ((String) p1.get(sorkIndex)).compareTo((String) p2.get(
                        sorkIndex));
            } else if (o1 instanceof String) {
                return ((String) o1).compareTo((String) o2);
            }
            return 0;
        }
    }
      

  5.   

    以下是代码实现,假定你的a.txt文件内容为:bbd 爱上了姑娘说 sgdas
    xcldl 地发光光 fhdgd
    ahdlenml 萨拉打官司的 thggj
    hleils 老顾客 zfhfghs
    flsejt 书送达两个 sdggx
    aejlkng 寺开梁殿阁 afshc此文件为输入文件,放在项目当前目录下;package Shurudanci;import java.util.*;
    import java.io.*;public class Shurudanci {
    public static void main(String[] args) throws Exception{
    BufferedReader br = new BufferedReader(new FileReader("a.txt"));
    String str = null;
    TreeSet ts = new TreeSet();
    HashSet hs = new HashSet();
    System.out.println("原先的集合为:");
    while((str = br.readLine())!=null){
    String[] str02 = str.split(" ");
    String str03 = str02[0];
    System.out.println(str);
    ts.add(str03);
    hs.add(str);
    }
    System.out.println("------------------------------------");
    System.out.println("后来的集合为:");
    for(Object obj : ts){
    String str05 = (String)obj;
    boolean bl = false;
    String str06 = null;
    for(Object obj03 : hs){
    str06 = (String)obj03;
    bl = str06.startsWith(str05);
    if(bl){
    System.out.println(str06);
    }
    }
    }
    }
    }代码经过调试,可以正确输出结果;
      

  6.   

    结果是:原先的集合为:
    bbd 爱上了姑娘说 sgdas
    xcldl 地发光光 fhdgd
    ahdlenml 萨拉打官司的 thggj
    hleils 老顾客 zfhfghs
    flsejt 书送达两个 sdggx
    aejlkng 寺开梁殿阁 afshc
    ------------------------------------
    后来的集合为:
    aejlkng 寺开梁殿阁 afshc
    ahdlenml 萨拉打官司的 thggj
    bbd 爱上了姑娘说 sgdas
    flsejt 书送达两个 sdggx
    hleils 老顾客 zfhfghs
    xcldl 地发光光 fhdgd
      

  7.   

    如果选用的集合是TreeSet,只要是正常排序,也就是从小到大,它自动会排列顺序,所以不必实现comparator接口方法里的compare()方法;本例就是利用了这一点省去了排序,自动排序就利用了这一点;