Java中List Set Map 是否有序等总结

Java中List Set Map 是否有序等总结,第1张

其实都是有序的。
不过set

map
的排序规则不是通常意义上的1,2,3这样排的而是按照HashCode,算法比较复杂,所以通常把set和map当作无序的
list
的有序很简单,就是按添加的顺序

Java中的Map默认是对元素不排序的,但是Map的实现类TreeMap能够把它保存的记录根据key排序,默认是按升序排序。如果我们想要改变排序方式,则需要使用比较器:Comparator。

//根据 Map的key进行字典排序
Map<String, String> parameterMap = new HashMap<String, String>();
List<MapEntry<String,String>> list = new ArrayList<MapEntry<String,String>>(parameterMapentrySet());
Collectionssort(list,new Comparator<MapEntry<String,String>>() {
//升序排序
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1getKey()compareTo(o2getKey());
}
});

Map是啥? 下面的代码演示,按照KeyValuePair的Value进行排序,你自己替换成你的Map就好了
List<KeyValuePair<String, String>> aa = new List<KeyValuePair<string, string>>();
// 正序
aaSort((a, b)=>aValueCompareTo(bValue));
// 降序
aaSort((a, b)=>-aValueCompareTo(bValue));

打印结果:
排序前:
[{KEY2=abd, KEY1=a}, {KEY2=abc, KEY1=b}, {KEY2=d, KEY1=c}, {KEY2=a, KEY1=d}]
排序后:
[{KEY2=a, KEY1=d}, {KEY2=abc, KEY1=b}, {KEY2=abd, KEY1=a}, {KEY2=d, KEY1=c}]

使用TreeMap 存放元素并排序,以下代码仅供参考:

package comkiddtestzhidao;
import javanetMalformedURLException;
import javautilArrayList;
import javautilComparator;
import javautilHashMap;
import javautilList;
import javautilMap;
import javautilTreeMap;
public class Test {
public static void main(String[] args) throws ClassNotFoundException, MalformedURLException {
List<Map<String, Object>> list = null;
list = instance(list);
Systemoutprintln(list);
Systemoutprintln(grouping(list, "a"));
}
private static Map<String, Object> grouping(List<Map<String, Object>> list, String key) {
// 使用TreeMap存放元素并排序
Map<String, Object> newMap = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2compareTo(o1);
}
});
liststream()forEach(m -> {
if (mcontainsKey(key)) {
List<Object> l = new ArrayList<>();
ladd(m);
newMapput(mget(key)toString(), l);
}
});
;
return newMap;
}
private static List<Map<String, Object>> instance(List<Map<String, Object>> list) {
list = new ArrayList() {
{
add(new HashMap() {
{
put("a", "1");
put("", "0");
}
});
add(new HashMap() {
{
put("a", "a11");
put("b", "2");
}
});
add(new HashMap() {
{
put("a", "111");
put("c", "3");
}
});
add(new HashMap() {
{
put("b", "22");
}
});
add(new HashMap() {
{
put("a", "1111");
put("b", "222");
}
});
}
};
return list;
}
}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/13315627.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-31
下一篇2025-08-31

发表评论

登录后才能评论

评论列表(0条)

    保存