java-Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串?

问题描述

Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串?

String[] meg ={"1#zhang#3207237”,"2#Wang#3207232“。。。}根据最后的数字大小排序后输出

解决方案

帮助lz实现了一下,望采纳

 import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

public class test {

    public static void main(String[] arg0){

        String[] Info = {"1#zhang#3207237","2#Wang#3207232"};
        Map<String, Integer> myMap = new LinkedHashMap();
        fillMap(myMap, Info);
        myMap = sortMap(myMap);
        printMap(myMap);
    }

    public static void fillMap(Map<String, Integer> myMap, String[] Info){

        int i, j;
        for(i = 0; i < Info.length; i++){
            for(j = Info[i].length() - 1; j >= 0; j--){
                if(Info[i].charAt(j) == '#') break;
            }
            int numLen = Info[i].length() - j;
            String strNum = Info[i].substring(
                    Info[i].length() - numLen + 1, Info[i].length());
            Integer num = Integer.valueOf(strNum);
        //  System.out.println(num);
            myMap.put(Info[i], num);
        }
    }

    private static void printMap(Map map){  

        Iterator it = map.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry entry = (Map.Entry) it.next();
            System.out.println(entry.getKey());
        }
    }   

    public static Map sortMap(Map oldMap) {
        ArrayList<Map.Entry<String, Integer>> list =
                new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {  

            public int compare(Entry<java.lang.String, Integer> arg0,
                    Entry<java.lang.String, Integer> arg1) {
                return arg0.getValue() - arg1.getValue();
            }
        });
        Map newMap = new LinkedHashMap();
        for (int i = 0; i < list.size(); i++) {
            newMap.put(list.get(i).getKey(), list.get(i).getValue());
        }
        return newMap;
    }
}

解决方案二:

利用正则表达式(或者利用ASCII码去判断是否为数字)去截取数字,然后拿到数字后稍微排序一下就可以了。

解决方案三:

利用正则表达式(或者利用ASCII码去判断是否为数字)去截取数字,然后拿到数字后稍微排序一下就可以了。

解决方案四:

输出原数组?你的意思是要把数字都排好序放前面,然后后面放字符?类似于这样:"77332210#zhang#”?

解决方案五:

新建一个Map集合 将截取的数字作为Map的key 原来的字符串作为Map的value
排序之后,通过key就可以输出对应的value了
(数字必须不同,否则这方法无效)

解决方案六:

看规律,这个串类似于json,按,分割,将分割后的每一段都封装成一个对象就好了

解决方案七:

看规律,这个串类似于json,按,分割,将分割后的每一段都封装成一个对象就好了

解决方案八:

利用正则表达式解决。这里只实现将其中的数字给解析出来。
public class Ceshi {
public static void main(String[] args){
String[] msg = {"1#zhang#3207237","2#Wang#3207232"};
for(String str:msg){
String[] msgtmp = str.split("D+");
for(String str1:msgtmp){
System.out.println(str1);
}
}
}
}

解决方案九:

楼上已经有具体的解决方案了。就不多说了,因为你这个有特殊的符号能够分割,比如根据最后一个#号找到index就可以拿到后面的数字了。

解决方案十:

楼上有同学给出具体代码了,修改一个地方好了,截取最后的数字串,Info[i].split(Info[i].lastIndexOf("#")+1)

时间: 2024-08-03 02:30:51

java-Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串?的相关文章

利用Collections工具类获取字符串数组中最长的元素

package cn.com; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; //要求:获取字符串数组中最长的元素 //在这里要利用Collections的另一个max方法 //public static <T> T max(Collection<? extends T> coll, Comparator<?

如何判断一个字符串数组中是否存在两个字符串序列相等?

问题描述 如何判断一个字符串数组中是否存在两个字符串序列相等?不要用时间复杂度为O(n2)的算法,请问具体要怎么做? 解决方案 解决方案二:publicbooleancompareEqual(String[]strs){booleanflag=false;//字符串数组中是否有两个字符串相等Stringtemp="";for(inti=0;i<strs.length;i++){if(temp.contains(strs[i])){flag=true;break;//若果有重复就直

string-从字符串数组中充填spinner

问题描述 从字符串数组中充填spinner 如何从字符串数组中充填spinner?我知道在array.xml中可以这样实现: ArrayAdapter<CharSequence> gameKindArray = ArrayAdapter.createFromResource(view.getContext()R.array.game_kind android.R.layout.simple_spinner_item); gameKindArray.setDropDownViewResource

ruby 怎么利用正则表达式在把一个字符串数组中的数字放到一个数组中?

问题描述 ruby 怎么利用正则表达式在把一个字符串数组中的数字放到一个数组中?str='100good200bad300ok'问题补充:说错了是把一个字符串中的所有数字放到一个数组中:)问题补充:是 100 200 300不过还是谢谢sunfjun 解决方案 str='100good200bad300ok' str.scan(/d+/)解决方案二:String的这个scan方法真不错, shaquan6776解决方案三:'100good200bad300ok'.split(/[^d]/).re

JS 清除字符串数组中,重复元素的实现方法_javascript技巧

JS 清除字符串数组中,重复元素的实现方法 <script language="JavaScript"> <!-- var arrData=new Array(); for(var i=0; i<1000; i++) { arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97); } //document.write(arrData+"<br/&g

android-如何在常规字符串数组中打印 sqlite 数据?

问题描述 如何在常规字符串数组中打印 sqlite 数据? 我写下面的代码来填充数据库,现在我想在一个数组中复制数据,然后在 arrayadapter 打印出来. 我使用 tabactivity,这是我找到的最好的解决方法. public void insertIntoTable(){ try{ mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null); mydb.execSQL("INSERT INTO " + TA

查找字符串数组中16进制数,并转换【原创】

  查找字符串数组中16进制数,并转换 #include <stdio.h> #include <stdlib.h> #include <string.h> void string_to_hex(unsigned char* input, int input_len, unsigned char* output, int output_len) { unsigned char tmp; int i; if (input_len > output_len*2) re

c#中,如何删除数组中既定的元素,得到删除后的新数组?

问题描述 c#中,如何删除数组中既定的元素,得到删除后的新数组? RT,比如a[10]={0,1,2,3,4,5,6,7,8,9}; b[4]={1,3,5,6}; 删除a中b的数后得到新的数组c,应该怎么做? 解决方案 int[] c = a.Except(b).ToArray(); 解决方案二: 没有在数组中删除元素的做法,新数组得创建 解决方案三: 删除数组中存在重复的元素.删除ary数组中的和keyword中相同的元素,其余的不变并输出 解决方案四: 要重新分配数组,把新内容复制过去

JS中取二维数组中最大值的方法汇总_javascript技巧

在JavaScript中可以通过内置的 Math.max() 的最大值,但是要从多重数组中取出最大值,还是有一定的难度. 问题描述 假设你有一个数组,而且这个数组中包含了数字的子数组,而我们要做的是从数组中的每个子数组中返回其最大的那个最大数. 基本解决方案 function largestOfFour(arr) { var results = []; // 创建一个results变量来存储 // 创建一个外层循环,遍历外层数组 for (var n = 0; n < arr.length; n