java - 如何根据标签文本对标签数组列表进行排序? JavaFX

标签 java arraylist javafx collections

我正在尝试对具有以下格式的文本的 Label 元素的数组列表进行排序:

“1:与[某人]咨询@14:15”

我的目标是通过时间变量对列表进行排序,特别是 @ 和 : 之间的小时。为此,我使用 foreach 循环对数组列表进行排序,拉出标签项的文本并提取 @ 和 之间的整数:

得到这个之后,我需要运行一个 IF 语句来检查 Labels 数组中的前一个 Label 的时间是否大于当前的时间,但我正在努力为每个循环获取此中的前一个数组元素,这可能吗?到目前为止我的代码:

for (Label label : dailyConsults){

                    String s1 = label.getText();
                    s1 = s1.substring(s1.indexOf("@") +1);
                    int thisConsult = Integer.parseInt(s1.substring(0, s1.indexOf(":")));

                    String s2 = PREVIOUS LABEL IN THIS ARRAY LIST AND GET TEXT
                    s2 = s2.substring(s2.indexOf("@") +1);
                    int previousConsult = Integer.parseInt( s2.substring(0, s2.indexOf(":")));

                    //if previous label time is greater than the current in this loop then move up
                    if(Integer.parseInt(s2) > Integer.parseInt(s1)){

                    while (dailyConsults.indexOf(label) != 0) {
                        int j = dailyConsults.indexOf(label);
                        Collections.swap(dailyConsults, j, j - 1);
                        }
                    }
                }

最佳答案

鉴于您的 dailyConsultsList<Label>您可以考虑:

    Collections.sort(dailyConsults, Comparator.comparingInt(label -> {
        String s = label.getText();
        s = s.substring(s.indexOf("@") +1);
        return Integer.parseInt(s.substring(0, s.indexOf(":")));
    }));

我使用的是Java 1.8;在早期版本中,这将需要多几行代码,但您可以使用相同的想法。

关于java - 如何根据标签文本对标签数组列表进行排序? JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782600/

相关文章:

Java错误: cannot invoke size() on the primitive type double

java - 在数组列表中存储对象

Java 使用 BufferedImage 从 URL 获取图像扩展名/类型

java - 在 Spring.message 属性中添加新行时出错

java - jetty 类路径问题

Java:从 ArrayList 引用数组作为方法输入

java仅获取treeItem的children值

java - JavaFX 初始化方法中的 NullPointerException

javafx - 悬停时如何在javafx TableView中突出显示一列而不是一行?

java - 我应该使用 32 位还是 64 位 JDK?