java list集合中抽取每个字符串元素中的数字进行排序 200

就是这个样子,通过后面的数字给每个元素排序,注(字和数字是一个元素)list集合在线等我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序... 就是这个样子,通过后面的数字给每个元素排序,注(字和数字是一个元素)list集合
在线等
我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序.......................................
展开
 我来答
邦德和他的007
2017-06-27 · 超过30用户采纳过TA的回答
知道答主
回答量:98
采纳率:29%
帮助的人:21.8万
展开全部
  1. 分析问题,集合中每一个元素都含有数字,需要得到里面的数字存入一个集合或者数组中

  2. 循环遍历字符串,根据下标判断每一个字符是否是数字,是的话加入一个空的字符串中,遍历一遍后得到原字符串中的数字字符串,转换成数字存入数组,进行升序排序

  3. 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);// 遍历输出
    }
    }
    }
  4. 结果:
    1
    2
    34
    100
    123
玩玩乐乐无爱cW103
2015-08-07 · TA获得超过131个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:82万
展开全部
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值)....不知道你能不能听懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laobaitu0322
2015-08-07 · TA获得超过744个赞
知道小有建树答主
回答量:900
采纳率:33%
帮助的人:645万
展开全部
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]


是否符合你的要求

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2f61011855
2015-08-07 · TA获得超过250个赞
知道小有建树答主
回答量:234
采纳率:0%
帮助的人:93.3万
展开全部
详情参考http://www.cnblogs.com/android-html5/archive/2012/06/02/2533926.html,就不给你贴代码了,就是字符串的处理,算是基本功。
追问
你说的单独的排序这简单的刚学java的都会,我是说1.拿出字符串中的数字,2.对数字进行排序3,对应到原来带数字那个字符串的排序,我想问1.我怎么拿到数字?比如我是56,你确定拿出来的是int型56,而不是字符串“56”,2.对数字排序后,怎么让原始字符串排序.......................................你告诉我这是基本功?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式