java - 如何在java中按字符串索引的升序对列表进行排序

标签 java android string

我在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/

相关文章:

android - 我应该使用 dip、dp、sip 还是 sp 进行文本格式化?

C++更改错误数组的值

java - 在 liferay 6.1.1 中部署主题没有反射(reflect)出任何变化

java.lang.IllegalStateException : Expected BEGIN_OBJECT but was STRING at line 1 column 62 错误

java - 如何使用\Q\E 通过 DOTALL 转义文字化 unicode 字符?

java - 如何解决 POM 中没有relativePath 的模块依赖关系?

Android TextView 样式

android - 如何从 Android 应用程序使用 HTTPS rest 服务

arrays - 如何从 &str 转换为 [i8; 256]

ruby-on-rails - 字符串 "Test ' < 3'"在我的 Rails 应用程序中显示为 "Test ' <3>"