這個StringBuffer怎么排序???compare該怎么重寫才能按想要的方式排序?
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class PracticeSort ?{
List <String> list=new ArrayList();
?/*
* stringList()方法
* 生成一個隨機長度10以內的字符串
* */
public void sringList(){
String s="adcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
int rand=random.nextInt(10)+1;
for(int i=0;i<rand;i++){
int x=random.nextInt(62);
sb.append(s.charAt(x));
}
list.add(sb.toString());-------------->這里只能把StringBuffer轉換了才能用sort排序,但是排出來的順序并不理想,不是想要的。
}
/*
* 生成10個字符串存放到list集合中,調用stringList()方法;
*?
* */
public void getTen(PracticeSort p){
for(int i=0;i<10;i++){
p.sringList();
}
}
/*
* 遍歷list打印輸出
* */
public void foreach(PracticeSort p){
for(int i=0;i<p.list.size();i++){
System.out.println(p.list.get(i));
}
}
/**
* 利用Collections.sort()對泛型為String的List進行排序:
* 1、創建List<String>之后,往其中添加十條隨機字符串
* 2、字符串長度為10以內
* 3、每條字符串都為隨機生成的字符
* 4、字符可以重復,但是字符串不可重復
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PracticeSort s=new PracticeSort();
s.getTen(s);
System.out.println("-------------排序前--------------");
s.foreach(s);
System.out.println("-------------排序后--------------");
Collections.sort(s.list);
s.foreach(s);
}
}
這個StringBuffer怎么排序???compare該怎么重寫才對?
2017-05-05
?/** ??*?2.對String泛型的List進行排序; ??*?創建String泛型的List,添加三個亂序的String元素 ??*?調用sort方法,再次輸出排序后的順序 ??*/ ?public?void?testSort2()?{ ??List<String>?stringList?=?new?ArrayList<String>(); ??//添加10個不重復的字符串 ??String?s?=?null; ?????StringBuffer?sb?=?new?StringBuffer();??? ??//length表示生成字符串的長度 ?????String?base?=?"abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM0123456789";??? ??for?(int?i?=?0;?i?<?10;?i++)?{ ???do?{ ????int?n?=?random.nextInt(10)?+?1; ????for?(int?j?=?0;?j?<?n;?j++)?{ ?????int?m?=?random.nextInt(base.length()); ?????sb.append(base.charAt(m)); ????} ????s?=?sb.toString(); ???}?while?(stringList.contains(s)); ???stringList.add(s); ???System.out.println("成功添加整數:"?+?s); ???//清除StringBuffer里面所有的字符,否則它會疊加字符(重要) ???sb.delete(0,?sb.length()); ??} ?? //??stringList.add("microsoft"); //??stringList.add("google"); //??stringList.add("lenovo"); ??System.out.println("`````````````````````````````排序前``````````````````````````````"); ??for?(String?string?:?stringList)?{ ???System.out.println("元素:"?+?string); ??} ??//排序integerList ??Collections.sort(stringList); ??System.out.println("`````````````````````````````排序后``````````````````````````````"); ??for?(String?string?:?stringList)?{ ???System.out.println("元素:"?+?string); ??} ?? ?}利用StringBuffer要注意緩存里的已經有的字符
?? //清除StringBuffer里面所有的字符,否則它會疊加字符(重要)
?? sb.delete(0, sb.length());
2017-05-05
public class CollectionTest {
public List<String> strlist;
CollectionTest(){
strlist=new ArrayList<String>();
}
public void RandomStringAndPaixu(){
String base=new String("0123456789abcdefghijklnmopqrstuvwxyz");
Random random=new Random();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<10;i++){
int number1=random.nextInt(10);
for(int j=0;j<number1+1;j++){
int number=random.nextInt(base.length());
sbf.append(base.charAt(number));
}
strlist.add(sbf.toString());
System.out.println("成功添加:"+sbf.toString());
sbf.setLength(0);
}
System.out.println("---------排序前--------");
for(String str:strlist){
System.out.println(str);
}
Collections.sort(strlist);
System.out.println("---------排序后--------");
for(String str:strlist){
System.out.println(str);
}
}
public static void main(String[] args) {
// TODO 自動生成的方法存根
CollectionTest ct=new CollectionTest();
ct.RandomStringAndPaixu();
}
}