java - 按项目在 XML 文件中的顺序对 Java List/Map 进行排序

标签 java xml sorting business-logic business-rules

我要做的是按照项目在 XML 文件中的顺序对 Java 列表或映射进行排序。

例如

我有一个函数名称列表:

  1. 功能一
  2. 功能三
  3. 功能二

XML 文件如下所示:

<xml>
  <function>functionOne</function>
  <function>functionTwo</function>
  <function>functionThree</function>
</xml>

所以我想对列表进行排序,使函数名称如下:

  1. 功能一
  2. 功能二
  3. 功能三

现在我也尝试对变量执行此操作,因此大约有 500 多个独特的“项目”。

有人知道我该怎么做吗?现在,对于确定排序顺序的文件不必是 XML,它只是我最常用的文件,它可以是任何可以完成工作的文件。

提前感谢您的宝贵时间。

最佳答案

首先,解析XML文件构建一个Map<String,Integer>它将名称映射到它们的顺序位置。

然后,您需要一个自定义比较器:

public class XMLComparator implements Comparator<String> {
    private Map<String,Integer> order;

    public XMLComparator(Map<String,Integer> desiredOrder) {
        order = desiredOrder;
    }

    public void compare(String s1, String s2) {
        return order.get(s1) - order.get(s2);
    }

}

然后将其应用于您的变量名称列表:

Collections.sort(variableNames, new XMLComparator(previouslyCreatedMap));

可能有一些边缘情况需要处理,但这是一般的想法。

关于java - 按项目在 XML 文件中的顺序对 Java List/Map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515014/

相关文章:

html - 页面中的div排列

ruby - 如何在 Ruby 中执行复杂的自定义排序?

java - 按列表值对 Java Map 进行排序

java - Hamcrest 匹配器用于不带强制转换的集合参数

java - 检测 ViewGroup 及其所有 subview 上的 SwipeGesture

python - 如何将 XML 字符串转换为字典?

sorting - 冒泡排序交换次数

java - 将重复值添加到 map ,无需外部库

java - Maven 通过 MAVEN_OPTS 指定设置文件位置

java - 从 java 对象创建 xml 文件