java 字符串排序

java 字符串排序,第1张

你好。代码如下:
import javautilArrayList;
import javautilCollections;
import javautilList;
import javautilScanner;
public class BaiduTest10 {
public static void main(String[] args) {
Systemoutprintln("请输入一串字符串:") ;
Scanner sc = new Scanner(Systemin) ;
String str = scnext() ;
Systemoutprintln("排序前:" + str);
String newStr = sort(str) ;
Systemoutprintln("排序后:" + newStr);
}

public static String sort(String str) {
char[] ch = strtoCharArray() ;
List<Character> list = new ArrayList<Character>() ;
for (int i=0;i<chlength;i++) {
listadd(ch[i]) ;
}
Collectionssort(list);
StringBuffer sb = new StringBuffer() ;
for (int i=0;i<chlength;i++) {
sbappend(listget(i)) ;
}
return sbtoString() ;
}
}

简单写了下,你看看
// 1判断字符串长度小于100并且全为小写字母
// 可以将字符串转为char数组,再去判断Unicode编号是否在小写字母范围内
private static boolean f1(String s) {
if (s == null | ""equals(s) | slength() > 100) {
return false;
}
char[] chs = stoCharArray();
for (char c : chs) {
if (c < 97 || c > 122) {
return false;
}
}
return true;
}
// 2写出到txt里,至于根据长度什么的太简单我就不写了
// 这里用流太麻烦,可以使用设置打印路径来搞定
private static void f2(String s) throws FileNotFoundException {
SystemsetOut(new PrintStream(new File("Stringtxt")));
Systemoutprintln(s);
}
然后F5下项目视图,Stringtxt就出现了,或者自己改个路径

一般情况下用
javautilArrayssort(字符串数组);按字典排序, 比如 "2" 就大于 "123"
如果你对字符串有自己的排序方法, 比如按长度等
那么你就要实现自己的Comparetor<String>, 这方面资料你自己找找
一样用上面的方法, 只不过参数要加一个Comparetor对象

例:
对加入 TreeSet的Student对象   实现Comparable接口,通过在Student中重写compareTo()方法确定该对象在TreeSet中的排序方式
Student类如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   
class Student implements Comparable
 
private int age;
 
//重写compareTo()方法
 
public int compareTo(Object o){
 
Student s = (Student) o;
 
if (thisage < sage )
 
return -1;
 
else if(sage == thisage)
 
return 0;
 
else
 
return 1;
 
}
当Student对象加入TreeSet时,是按年龄从小到大排序的。

import javautilArrays;
public class StringDateSort {
public static void main(String[] args) {
String numString="23 10 -8 0 3 7 108";
String sortStr=sortNumberString(numString);
Systemoutprintln("排序的结果是"+sortStr);
}

private static String sortNumberString(String numString) {

//1将给定的字符串分解成多个数字格式字符串
String[] numStrings=toStringArray(numString);

//2将字符串数组转成int数组
int[] nums=toIntArray(numStrings);

//3对数组排序
sort(nums);

//4将int数组转成字符串
return toString(nums);
}
private static String toString(int[] nums) {
StringBuffer stringBuffer=new StringBuffer();
for (int i = 0; i < numslength; i++) {
if (i!=numslength-1) {
stringBufferappend(nums[i]+"<");
}else{
stringBufferappend(nums[i]);
}
}
return stringBuffertoString();
}
private static void sort(int[] nums) {
Arrayssort(nums);
}
private static int[] toIntArray(String[] numStrings) {
int[] nums=new int[numStringslength];
for (int i = 0; i < numStringslength; i++) {
String s=numStrings[i];
nums[i]=IntegerparseInt(s);
}
return nums;
}
private static String[] toStringArray(String numString) {
String[] numberStr=numStringsplit(" ");
for (int i = 0; i < numberStrlength; i++) {
Systemoutprintln("抽出数字"+numberStr[i]);
}
return numberStr;
}
}

BufferedReader read = new BufferedReader(new InputStreamReader(Systemin));
String str = readreadLine();//这两句用于读取从控制台输入的值,读取的为字符串,排序前需将字符串转换为数字类型,排序就简单了,自己先思考思考


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13168505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-15
下一篇 2023-06-15

发表评论

登录后才能评论

评论列表(0条)

保存