java list集合中抽取每个字符串元素中的数字进行排序 200
就是这个样子,通过后面的数字给每个元素排序,注(字和数字是一个元素)list集合在线等我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序...
就是这个样子,通过后面的数字给每个元素排序,注(字和数字是一个元素)list集合
在线等
我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序....................................... 展开
在线等
我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序....................................... 展开
4个回答
展开全部
分析问题,集合中每一个元素都含有数字,需要得到里面的数字存入一个集合或者数组中
循环遍历字符串,根据下标判断每一个字符是否是数字,是的话加入一个空的字符串中,遍历一遍后得到原字符串中的数字字符串,转换成数字存入数组,进行升序排序
import java.util.ArrayList;
import java.util.Arrays;
public class Test20 {
public static int getNum(String s) {// 获取字符串中的数字
String num = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {// 遍历判断是否为数字
num += s.charAt(i);
}
}
return Integer.parseInt(num);
}
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();// 字符串集合
list.add("abc123");
list.add("我是栗子1");
list.add("我是栗子2");
list.add("我是栗子3是栗子4");
list.add("栗子100"); // 例子
int[] array = new int[list.size()];// 定义一个数组用来存放数字
for (int i = 0; i < list.size(); i++) {
array[i] = getNum(list.get(i));// 遍历集合,调用方法获得里面的数字并存入数组
}
Arrays.sort(array);// 升序排序
for (int i : array) {
System.out.println(i);// 遍历输出
}
}
}结果:
1
2
34
100
123
展开全部
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(s);
if(m.find()){
int num = Integer.valueOf(m.group());//截取到数字
}
获得数字后就是排序了。。冒泡或者快排 这个很容易搜到吧
追问
你说的单独的排序这简单的刚学java的都会,我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序.......................................
追答
1.你没看我写的么? m.group()就是取得字符串 ,Integer.valueOf(m.group())就是转成int型啊!
2.这个你得动脑啊,比如,循环的去数字的时候,取得数字存一份到一个新的List,存个HashMap,List的每项item为key,下标为value,然后给新的list排序。排完循环新的list,每次取出一个值去之前的map里面取得原下标就可以取到原list中的值,然后原list.set(当前循环下标,原list值)....不知道你能不能听懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.*;
public class Ex implements Comparator<String>{
List<String> list = new ArrayList<String>();
public static void main(String[] args) {
new Ex();
}
public Ex() {
list.add("abc3");
list.add("xya2");
list.add("ddd1");
list.add("fas93");
list.add("lkk30");
list.add("mmm78");
list.add("ccd12");
System.out.println(list);
list.sort(this);
System.out.println(list);
}
@Override
public int compare(String s1, String s2) {
return getNum(s1) - getNum(s2);
}
private int getNum(String s) {
String n = new String();
for(int i = s.length() - 1; i >= 0 && s.charAt(i) >= '0' && s.charAt(i) <= '9'; i--)
n = s.charAt(i) + n;
return Integer.valueOf(n).intValue();
}
}
做个字符串的比较器,然后直接sort
运行结果
[abc3, xya2, ddd1, fas93, lkk30, mmm78, ccd12]
[ddd1, xya2, abc3, ccd12, lkk30, mmm78, fas93]
是否符合你的要求
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
详情参考http://www.cnblogs.com/android-html5/archive/2012/06/02/2533926.html,就不给你贴代码了,就是字符串的处理,算是基本功。
追问
你说的单独的排序这简单的刚学java的都会,我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序.......................................你告诉我这是基本功?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询