如何对LinkedHashMap <integer,htmltagvalues =“”>进行排序,其中HtmlTagValues是具有各种值的类?

时间:2019-05-31 09:20:10

标签: java sorting

我对Java比较陌生,因此尝试对LinkedHashMap<Integer, HtmlTagValues> newHtmlTagValues进行排序,其中HtmlTagValues是一个公共类,它具有HTML页面中的许多值。我想对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);

1 个答案:

答案 0 :(得分:0)

我认为HtmlTagValues类中有一个用于所有属性的构造器

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

注意:我还假设您每个属性都有获取者/设置者。


现在假设我们有以下地图

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"));

在这里,我们可以通过属性“ Top”按值对地图进行排序

Map<String, Student> 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")