为了账号安全,请及时绑定邮箱和手机立即绑定

这个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怎么排序啊?compare该怎么重写才能按想要的方式排序?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信