gpt4 book ai didi

java - 比较和排序具有数字和特殊字符的字符串

转载 作者:行者123 更新时间:2023-11-30 02:27:22 24 4
gpt4 key购买 nike

我有一个需要排序的字符串列表(见下文)。

  • “<5公顷”
  • ">= 10 公顷到 < 20 公顷"
  • ">= 20 公顷至 < 50 公顷"
  • ">= 5 公顷至 < 10 公顷"
  • ">= 50 公顷"

看起来很简单,但到目前为止,我还没有找到一个简单的方法来做到这一点。Element 类只有一个名为 code 的 String 类型属性。Java 代码就在下面,你知道吗?

    public class SortingListComparator {
private static List<Element> testList;

public static void main(String[] args) {
initList();
Collections.sort(testList, new ElementComparator());

for (Element elem : testList) {
System.out.println("Code of element : " + elem.getCode());
}
}

private static void initList() {
testList = new ArrayList<Element>();

Element elem1 = new Element("< 5 ha");
Element elem2 = new Element(">= 10 ha to < 20 ha");
Element elem3 = new Element(">= 20 ha to < 50 ha");
Element elem4 = new Element(">= 5 ha to < 10 ha");
Element elem5 = new Element(">= 50 Ha");

testList.add(elem1);
testList.add(elem2);
testList.add(elem3);
testList.add(elem4);
testList.add(elem5);
}

public static class ElementComparator implements Comparator<Element> {
@Override
public int compare(Element o1, Element o2) {
return o1.getCode().compareTo(o2.getCode());
}
}
}

最佳答案

真正的答案是:退后一步 - 创建有用的抽象。

您不应该将问题视为“字符串”排序。您会看到,这些字符串代表间隔(或范围)信息。

含义:虽然它可能看起来“更多工作”,但您应该考虑建模这些方面。换句话说:

  • 创建一个表示(数学)间隔的类
  • 创建将“< 5 ha”等字符串解析为区间对象的代码
  • 然后对区间对象进行排序

您也可以查看第 3 方库,而不是创建自己的类,如 here 所述。 .

重点是:您的字符串包含非常特殊信息。好的 OOP 的整体思想就是在代码库中表示这种“最佳方式”。

关于java - 比较和排序具有数字和特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45301758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com