HtmlTagValues 是一个具有各种值的类?,java,sorting"/>

首页 > 解决方案 > 如何对 LinkedHashMap 进行排序HtmlTagValues 是一个具有各种值的类?

问题描述

我对 Java 比较陌生,并试图从 HTML 页面中对具有大量值的公共类LinkedHashMap<Integer, HtmlTagValues> newHtmlTagValues进行排序。HtmlTagValues我想对 Top 值进行排序。

public class HtmlTagValues {
    public String Top;
    public String Height;
    public String Width;
    public String Left;
    ....
}

这些值以下列方式存储。

HtmlTagValues v = new HtmlTagValues();
v.Top = topValue;
v.Left = leftValue; 
hHtmlTagValues.put(nPage + ElementID, v);

标签: javasorting

解决方案


我认为所有属性的 HtmlTagValues 类中都有一个构造函数

public HtmlTagValues(String top, String height, String width, String left) {
    this.top = top;
    this.height = height;
    this.width = width;
    this.left = left;
}

注意:我还假设每个属性都有 getter/setter。


现在假设我们有以下地图

Map<Integer, HtmlTagValues> map = new LinkedHashMap<>();

map.put(1, new HtmlTagValues("Z", "10", "768", "100"));
map.put(2, new HtmlTagValues("A", "10", "768", "100"));
map.put(3, new HtmlTagValues("B", "10", "768", "100"));
map.put(4, new HtmlTagValues("D", "10", "768", "100"));
map.put(5, new HtmlTagValues("C", "10", "768", "100"));

这是我们如何按值对地图进行排序的方法,按属性“顶部”

Map<Integer, HtmlTagValues> sortedMap = map.entrySet()
        .stream()
        .sorted(Map.Entry.comparingByValue(Comparator.comparing(HtmlTagValues::getTop)))
        .collect(Collectors.toMap(
                Map.Entry::getKey,
                Map.Entry::getValue,
                (oldValue, newValue) -> oldValue, LinkedHashMap::new));

您的排序地图将如下所示

2,HtmlTagValues("A", "10", "768", "100")
3,HtmlTagValues("B", "10", "768", "100")
5,HtmlTagValues("C", "10", "768", "100")
4,HtmlTagValues("D", "10", "768", "100")
1,HtmlTagValues("Z", "10", "768", "100")

完整的工作示例:

https://gist.github.com/mackatozis/8aa81597bc33d885635cb3a9935e5cd5


推荐阅读