问题描述
同学给了个单词表说让给重新排个序要求是:在一组单词中每个单词的首字母要不同,手动太慢了想写个程序我能想到的最笨的办法就是把单词表按首字母分成了26组每个组作为一个文件然后做个循环每次从一个文件组中读一个单词放到一个新的文件中,然后就是做的时候发现依次读取文件搞不太明白,把文件作为一个数组该怎么操作不太会,知道的朋友说一下或者有好的实现方法也说一下有程序更好呵呵谢谢大家了!
解决方案
解决方案二:
文件不大的话,一起读进来,用split()分割成数组再操作
解决方案三:
自己写个类实现Comparator<Object>接口自己在publicintcompare(Objecto1,Objecto2){取单词首字母比较}将所有的要排序的单词放到list里面调用Collections.sort(list,);要倒序排在reverse一下就OK了
解决方案四:
因为他给的单词表是类似于这样的:absurda.荒谬的,荒诞的,荒唐可笑的;不合理的academica.学院的,大学的;学术性的;理论的acceleratev.使加速,使增速,促进vi.加快,增加accessoryn.附件,附属品;(为全套衣服增加美感的)服饰accidentala.偶然的;意外的;无意中的acclaimv.向…欢呼,公认n.欢呼,喝彩,称赞不是单纯只有单词,所以感到有点难搞,上面说的那些方法对于这种情况能不能用
解决方案五:
如果文件里就是一行一个的好分,直接用换行符区分
解决方案六:
只要对前面的字母排序就可以啊!!除非单词相同否则不会出现单词相同!!
解决方案七:
实现Comparator可以用的...
解决方案八:
给你我以前做过的例子,给你参考一下publicclassSortUtil{/***对PO对象列表进行排序.**@paramlist*ListPO对象列表*@paramattr*String用户属性*@paramreverseOrder*booleantrue表示降序,false表示升序**@return*ListPO对象列表*/publicstaticListsort(Listlist,Stringattr,booleanreverseOrder){if(reverseOrder){//降序Comparatorcomp=Collections.reverseOrder(newPOComparator(attr));Collections.sort(list,comp);}else{Collections.sort(list,newPOComparator(attr));}returnlist;}}
publicclassPOComparatorimplementsComparator{/***排序属性,比如uidaleph.*/privateStringsorkIndex="";/****@paramsorkIndex.*/publicPOComparator(StringsorkIndex){this.sorkIndex=sorkIndex;}/****@paramo1*POthefirstobjecttobecompared.*@paramo2*POthesecondobjecttobecompared.*@return*anegativeinteger,zero,orapositiveintegerasthe*firstargumentislessthan,equalto,orgreaterthanthe*second.**/publicintcompare(Objecto1,Objecto2){if(o1instanceofPO){POp1=(PO)o1;POp2=(PO)o2;return((String)p1.get(sorkIndex)).compareTo((String)p2.get(sorkIndex));}elseif(o1instanceofHashtable){Hashtablep1=(Hashtable)o1;Hashtablep2=(Hashtable)o2;return((String)p1.get(sorkIndex)).compareTo((String)p2.get(sorkIndex));}elseif(o1instanceofString){return((String)o1).compareTo((String)o2);}return0;}}
解决方案九:
用jAVA自带的快排
解决方案十:
以下是代码实现,假定你的a.txt文件内容为:bbd爱上了姑娘说sgdasxcldl地发光光fhdgdahdlenml萨拉打官司的thggjhleils老顾客zfhfghsflsejt书送达两个sdggxaejlkng寺开梁殿阁afshc此文件为输入文件,放在项目当前目录下;packageShurudanci;importjava.util.*;importjava.io.*;publicclassShurudanci{publicstaticvoidmain(String[]args)throwsException{BufferedReaderbr=newBufferedReader(newFileReader("a.txt"));Stringstr=null;TreeSetts=newTreeSet();HashSeths=newHashSet();System.out.println("原先的集合为:");while((str=br.readLine())!=null){String[]str02=str.split("");Stringstr03=str02[0];System.out.println(str);ts.add(str03);hs.add(str);}System.out.println("------------------------------------");System.out.println("后来的集合为:");for(Objectobj:ts){Stringstr05=(String)obj;booleanbl=false;Stringstr06=null;for(Objectobj03:hs){str06=(String)obj03;bl=str06.startsWith(str05);if(bl){System.out.println(str06);}}}}}
代码经过调试,可以正确输出结果;
解决方案十一:
结果是:原先的集合为:bbd爱上了姑娘说sgdasxcldl地发光光fhdgdahdlenml萨拉打官司的thggjhleils老顾客zfhfghsflsejt书送达两个sdggxaejlkng寺开梁殿阁afshc------------------------------------后来的集合为:aejlkng寺开梁殿阁afshcahdlenml萨拉打官司的thggjbbd爱上了姑娘说sgdasflsejt书送达两个sdggxhleils老顾客zfhfghsxcldl地发光光fhdgd
解决方案十二:
如果选用的集合是TreeSet,只要是正常排序,也就是从小到大,它自动会排列顺序,所以不必实现comparator接口方法里的compare()方法;本例就是利用了这一点省去了排序,自动排序就利用了这一点;