D许咚
2017-05-05 14:48
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.对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());
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();
}
}
Java入门第三季
409792 学习 · 4340 问题
相似问题
回答 3
回答 2