如何根据作为字符串一部分的频率对字符串进行排序?

时间:2015-06-10 04:21:59

标签: java string sorting hashmap

我有一个字符串变量' v1'形式(每一行用" \ r \ n"分割):

a, 2.0, 2.0, 3.0
b, 1.0, 3.0, 6.8
c, 4.0, 2.8, 5.4

输出应该是单个字符串变量' out1'形式:

b, 1.0, 3.0, 6.8
c, 4.0, 2.8, 5.4
a, 2.0, 2.0, 3.0

我应该根据在每行的最后一个逗号之后写的字符串部分对上面的输入进行排序(例如:在上述情况中为6.8,5.4和3.0)。这将在java中完成。

如何实施(无需担心效率)?

1 个答案:

答案 0 :(得分:0)

也许你可以这样做:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Sample {

    public static void main(String[] args) {
        String v1 = "a, 2.0, 2.0, 3.0\r\nb, 1.0, 3.0, 6.8\r\nc, 4.0, 2.8, 5.4\r\n";
        List<String> list = new ArrayList<String>();
        for(String line: v1.split("\r\n")) {
            list.add(line);
        }
        Collections.sort(list, new Comparator<String>() {
            public int compare(String s1, String s2) {
                Float f1 = Float.parseFloat(s1.split(",")[3].trim());
                Float f2 = Float.parseFloat(s2.split(",")[3].trim());
                return f2.compareTo(f1);
            }
        });
        StringBuilder result = new StringBuilder();
        for(String line: list) {
            System.out.println(line);
            result.append(line+"\r\n");
        }
        System.out.println(result.toString());
    }
}