Java中关于字符串的一道面试题 编码实现 将10个字符串中的数字类型和字符类型加以区别,数字类型按大小排序,字符类型按长度排序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Scanner;public class StrAndIntCount { static List<Integer> intList=new ArrayList<Integer>(); static List<String> strList=new ArrayList<String>(); public static void main(String[] args) { Scanner console = new Scanner(System.in); for (int i = 0; i < 10; i++) { System.out.println("请输入你的"+(i+1)+"个字符串:"); String str=console.nextLine(); spit(str); } sort(); showList(); } /**演示排序的集合*/ private static void showList() { System.out.println("整数的排序:"); for(int a : intList){ System.out.print(a+", "); } System.out.println(); System.out.println("字符串的排序:"); for(String b : strList){ System.out.print(b+", "); } } /**1,整数集合按从大到小排序 * 2,字符结合按字符串长度排序 * */ private static void sort() { //整数集合排序 Collections.sort(intList, new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o2-o1; } }); //字符集合排序 Collections.sort(strList, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.length()-o1.length(); } }); } /**判断用户输入的字符类型*/ private static void spit(String str) { String regInt="^\\d*$"; if(str.matches(regInt)){ int intStr=Integer.parseInt(str); intList.add(intStr); } else{ strList.add(str); } }} 不知道是不是你想要的package com.zf.thread;import java.util.Arrays;import java.util.Comparator;import java.util.LinkedList;public class Thread4 { public static void main(String[] args) { String[] strs = new String[] {"fdasfa","fda" ,"321","432","222" ,"343","5k321","643jk432" ,"fsds"}; LinkedList<String> linkedList = new LinkedList<String>(); int numeralSize = 0 ; //记录数字的个数 for (String s : strs) { if(s.matches("\\d+")){ linkedList.addFirst(s); //数字放前 numeralSize++; }else{ linkedList.addLast(s); //字符串放后 } } strs = linkedList.toArray(new String[linkedList.size()]); Arrays.sort(strs, 0 , numeralSize, new NumeralComparator()); Arrays.sort(strs, numeralSize , strs.length, new StringComparator()); //排序后 for (String string : strs) { System.out.println(string); } }}/** * 数字类型比较器 * @author zhoufeng */class NumeralComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) { return Integer.valueOf(o1) - Integer.valueOf(o2); } }/** * String类型比较器 * @author zhoufeng */class StringComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } } 关于一个join使用的问题,程序有点麻烦,望那个大侠帮帮忙 jface中如何设置toolbar的按钮样式 快帮看看啊! 要用到别人开发的(不包含在JDK中的).jar包,应该怎么设置呢? JAVA串口编程,关于感应卡考勤机的问题!!! 如何获得一个文件的扩展名! SOCKET的几个问题 String 型 转Date型 急 java 中图片显示的问题? Opera的java支持问题 这代码有什么不妥之处 java 有关动态绑定的理解
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;public class StrAndIntCount {
static List<Integer> intList=new ArrayList<Integer>();
static List<String> strList=new ArrayList<String>();
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
System.out.println("请输入你的"+(i+1)+"个字符串:");
String str=console.nextLine();
spit(str);
}
sort();
showList();
}
/**演示排序的集合*/
private static void showList() {
System.out.println("整数的排序:");
for(int a : intList){
System.out.print(a+", ");
}
System.out.println();
System.out.println("字符串的排序:");
for(String b : strList){
System.out.print(b+", ");
}
}
/**1,整数集合按从大到小排序
* 2,字符结合按字符串长度排序
* */
private static void sort() {
//整数集合排序
Collections.sort(intList, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
//字符集合排序
Collections.sort(strList, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length()-o1.length();
}
});
}
/**判断用户输入的字符类型*/
private static void spit(String str) {
String regInt="^\\d*$";
if(str.matches(regInt)){
int intStr=Integer.parseInt(str);
intList.add(intStr);
}
else{
strList.add(str);
}
}}
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
public class Thread4 { public static void main(String[] args) { String[] strs = new String[]
{"fdasfa","fda" ,"321","432","222"
,"343","5k321","643jk432" ,"fsds"}; LinkedList<String> linkedList = new LinkedList<String>();
int numeralSize = 0 ; //记录数字的个数
for (String s : strs) {
if(s.matches("\\d+")){
linkedList.addFirst(s); //数字放前
numeralSize++;
}else{
linkedList.addLast(s); //字符串放后
}
}
strs = linkedList.toArray(new String[linkedList.size()]);
Arrays.sort(strs, 0 , numeralSize, new NumeralComparator());
Arrays.sort(strs, numeralSize , strs.length, new StringComparator());
//排序后
for (String string : strs) {
System.out.println(string);
}
}}/**
* 数字类型比较器
* @author zhoufeng
*/
class NumeralComparator implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(o1) - Integer.valueOf(o2);
}
}/**
* String类型比较器
* @author zhoufeng
*/
class StringComparator implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
}