Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按浮点值对包含字符串(如“0.222:Hello test”)的arraylist进行排序的最简单、最快速的方法?_Java - Fatal编程技术网

Java 按浮点值对包含字符串(如“0.222:Hello test”)的arraylist进行排序的最简单、最快速的方法?

Java 按浮点值对包含字符串(如“0.222:Hello test”)的arraylist进行排序的最简单、最快速的方法?,java,Java,我花了几天的时间来整理一个由这些组成的arraylist Strings通过列表开头的浮动: 0.1:test1 0.11:test2 0.21:test3 0.14:test4 2.1:测试5 我找不到办法,最近的一次尝试是使用collections.sort 但它只按第一个数字对列表进行排序,这不是我要找的:/ 有人能帮我吗?提前非常感谢,这个网站已经在我的java爱好项目上帮了我很多忙: Collections.sort(arrayList1); Collections.r

我花了几天的时间来整理一个由这些组成的arraylist Strings通过列表开头的浮动: 0.1:test1 0.11:test2 0.21:test3 0.14:test4 2.1:测试5 我找不到办法,最近的一次尝试是使用collections.sort 但它只按第一个数字对列表进行排序,这不是我要找的:/

有人能帮我吗?提前非常感谢,这个网站已经在我的java爱好项目上帮了我很多忙:

    Collections.sort(arrayList1);
    Collections.reverse(arrayList1);
    for (String value : arrayList1){
        System.out.println(value);
    }
按第一个数字排序而不是按整数排序最简单的解决方案:

List<String> list = Arrays.asList("0.1:test1", "0.11:test2", "0.21:test3", "0.14:test4", "2.1:test5");

list.sort(Comparator.comparingDouble(s -> Double.parseDouble(s.split(":", 2)[0])));

System.out.println(list);

使用compare方法内部的split和parseDouble调用,这当然不是最快的解决方案,但却是最简单的。

因为最慢的部分是对float的解析,所以首先将字符串列表转换为对象列表,按float值对对象进行排序,完成后再转换回字符串列表。这可能是最快的方法,但肯定不是最简单的方法,你更喜欢哪一种,简单还是快速?谢谢你的快速回答!我在寻找:{0.1:test1,0.11:test2,0.14:test4,0.21:test3,2.1:test5}我希望有一个快速有效排序的最佳代码,这段代码的主要目标是有一个简单的基于机会的系统,比如视频游戏,你可以50%的机会得到一些东西,例如,听起来你真的有一个新类型。您应该创建一个表示这种类型的类,让它实现Comparable,并创建自己的compare方法。然后你就可以通过任何你想要的方式运行它。哇!谢谢你的快速帮助!:我试着去实现它并熟悉它,非常感谢Andreas!有没有更快的方法?我想在列表中有近100个“字符串”,我可以用树形图吗?@meow你用100个字符串试过了吗?对你来说太慢了吗?在我的电脑上大约需要0.1毫秒。