亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這個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該怎么重寫才對?


正在回答

2 回答

?/**
??*?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());

1 回復 有任何疑惑可以回復我~
#1

D許咚 提問者

關于清除緩存的我還沒想到,我生成10個隨機字符串相當于創建了10次stringbuffer,系統占用比較高。另外我主要想復寫comparable,看了后面的視頻了解了
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();


}


}


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

這個StringBuffer怎么排序?。縞ompare該怎么重寫才能按想要的方式排序?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號