X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2FLangUtils.java;h=e4cc607d666c2777c94680222c5abcb4f1476421;hb=0355335bf05f1d5a480dd73c5974c871c8e02aa4;hp=0e214271d7a612642b35e0af3f1b971a56f89280;hpb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/util/LangUtils.java b/org.argeo.cms/src/org/argeo/cms/util/LangUtils.java index 0e214271d..e4cc607d6 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/LangUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/util/LangUtils.java @@ -12,13 +12,17 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.Dictionary; import java.util.Enumeration; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; import javax.naming.InvalidNameException; @@ -279,6 +283,24 @@ public class LangUtils { throw new IllegalArgumentException("Index " + index + " is not available (size is " + i + ")"); } + public static > Map sortByValue(Map map) { + return sortByValue(map, false); + } + + public static > Map sortByValue(Map map, boolean descending) { + List> list = new ArrayList<>(map.entrySet()); + list.sort(Entry.comparingByValue()); + if (descending) + Collections.reverse(list); + + Map result = new LinkedHashMap<>(); + for (Entry entry : list) { + result.put(entry.getKey(), entry.getValue()); + } + + return result; + } + /* * EXCEPTIONS */