同学给了个单词表说让给重新排个序 要求是 :在一组单词中 每个单词的首字母要不同 ,手动太慢了想写个程序 我能想到的最笨的办法就是把单词表按首字母分成了26组 每个组作为一个文件 然后做个循环 每次从一个文件组中读一个单词放到一个新的文件中 ,然后就是做的时候发现依次读取文件搞不太明白 ,把文件作为一个数组该怎么操作不太会 ,知道的朋友说一下 或者有好的实现方法也说一下 有程序更好 呵呵 谢谢大家了!
调试欢乐多
自己在public int compare(Object o1, Object o2) {
取单词首字母比较
}
将所有的要排序的单词放到list里面
调用Collections.sort(list,);
要倒序排在 reverse一下就OK了
absurd a.荒谬的,荒诞的,荒唐可笑的;不合理的
academic a.学院的,大学的;学术性的;理论的
accelerate v.使加速,使增速,促进 vi.加快,增加
accessory n.附件,附属品;(为全套衣服增加美感的)服饰
accidental a.偶然的;意外的;无意中的
acclaim v.向…欢呼,公认 n.欢呼,喝彩,称赞
不是单纯只有单词 ,所以感到有点难搞 ,上面说的那些方法对于这种情况能不能用
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;
}
}
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);
}
}
}
}
}代码经过调试,可以正确输出结果;
bbd 爱上了姑娘说 sgdas
xcldl 地发光光 fhdgd
ahdlenml 萨拉打官司的 thggj
hleils 老顾客 zfhfghs
flsejt 书送达两个 sdggx
aejlkng 寺开梁殿阁 afshc
------------------------------------
后来的集合为:
aejlkng 寺开梁殿阁 afshc
ahdlenml 萨拉打官司的 thggj
bbd 爱上了姑娘说 sgdas
flsejt 书送达两个 sdggx
hleils 老顾客 zfhfghs
xcldl 地发光光 fhdgd