问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

这个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该怎么重写才对?


提问者:D许咚 2017-05-05 14:48

个回答

  • AquanGeek
    2017-05-05 16:36:24
    已采纳

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

  • 慕粉3954379
    2017-05-05 16:23:07

    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();


    }


    }