作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在java中创建了一个列表,如下所示:
1 bbbb london
1.1 aaaa nyc
1.10 cccc jaipur
...
1.2 test test
1.11 test1 test1
我需要根据索引 1,1.1,1.2 等对其进行排序!这些是字符串值。
喜欢:
1 bbbb london
1.1 aaaa nyc
1.2 test test
...
1.10 cccc jaipur
1.11 test1 test1
我怎样才能做到这一点?
最初索引是 float 的,但为了在列表中获得 1.10,我将索引更改为字符串,因此 Collection.sort(list)
不会按预期提供输出。
我的目的是创建一个编号的项目符号,例如
1 Helo
1.1 helo1
1.2 helo2
1.3 hello3
2 Test
2.1 Test1
2.2 Test2
3 World
请问有什么帮助吗?
最佳答案
给定列表:
List<String> list = Arrays.asList("1.32 bbbb london", "21.1 aaaa nyc",
"100.10 cccc jaipur", "1.2 test test",
"1.11 test1 test1");
您可以编写自己的自定义比较器,如下所示:
Collections.sort(list, new Comparator<String>() {
public int compare(String o1, String o2) {
return Float.compare(Float.parseFloat(o1.split(" ")[0]),
Float.parseFloat(o2.split(" ")[0]));
}
});
在这里,我们用 ""
分割字符串,并获取字符串的 float 部分,该部分恰好是字符串的第一个索引大批。现在我们将其解析为 float 并将其与第二个字符串进行比较。
如果您使用的是java-8
,您只需一行即可完成:
Collections.sort(list, (o1, o2) ->
Float.compare(Float.parseFloat(o1.split(" ")[0]), Float.parseFloat(o2.split(" ")[0])));
关于java - 如何在java中按字符串索引的升序对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53901816/
我是一名优秀的程序员,十分优秀!