博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA——list子集为map时常用的一些操作方法
阅读量:3905 次
发布时间:2019-05-23

本文共 3709 字,大约阅读时间需要 12 分钟。

在开发中,我们会用到List集合去传递参数,较为常用的方式是List携带子集map。

List
> myList = new ArrayList
>();

我们常常会根据需求对List做一些操作,除了常用的Add()方法,我们也可能用到一些排序、删除的方法。

后面是详细的示例,这里先列出关键方法的代码:

1.按Map元素中子元素的值来排序List

Collections.sort(myList, (Map
m1, Map
m2) -> m1.get("score").compareTo(m2.get("score")));

2.翻转List当前的排序

Collections.reverse(myList);

3.随机打乱List顺序 (每次执行的结果 不一样)

Collections.shuffle(myList);

4.根据条件移除list中元素

myList.removeIf(mp -> Integer.parseInt(mp.get("score"))<3);

5.根据索引移除list中的元素

myList.remove(0);

示例代码:

public static void main(String[] args) {
List
> myList = new ArrayList
>(); HashMap
map2 = new HashMap<>(); map2.put("name", "二毛"); map2.put("score", "2"); HashMap
map3 = new HashMap<>(); map3.put("name", "狗蛋"); map3.put("score", "3"); HashMap
map = new HashMap<>(); map.put("name", "小明"); map.put("score", "1"); HashMap
map4 = new HashMap<>(); map4.put("name", "牙牙"); map4.put("score", "4"); myList.add(map2); myList.add(map3); myList.add(map); myList.add(map4); System.out.println("排序前:"+myList); //排序前:[{score=2, name=二毛}, {score=3, name=狗蛋}, {score=1, name=小明}, {score=4, name=牙牙}]//------------------------------------------------------ // TODO :按Map元素里的 score 进行排序 Collections.sort(myList, (Map
m1, Map
m2) -> m1.get("score").compareTo(m2.get("score"))); System.out.println("排序后:"+myList); //排序后:[{score=1, name=小明}, {score=2, name=二毛}, {score=3, name=狗蛋}, {score=4, name=牙牙}]//------------------------------------------------------ // TODO: 翻转list当前的排序 Collections.reverse(myList); System.out.println("翻转排序后:"+myList); //翻转排序后:[{score=4, name=牙牙}, {score=3, name=狗蛋}, {score=2, name=二毛}, {score=1, name=小明}]//-------------------------------------------------------- // TODO :随机打乱顺序 (每次执行的结果 不一样) Collections.shuffle(myList); System.out.println("打乱顺序: "+myList); //打乱顺序: [{score=2, name=二毛}, {score=1, name=小明}, {score=3, name=狗蛋}, {score=4, name=牙牙}]//------------------------------------------------------- // TODO :根据条件移除list中元素: 移除 score小于3的map元素 myList.removeIf(mp -> Integer.parseInt(mp.get("score"))<3); System.out.println("按条件移除后: "+myList); //按条件移除后: [{score=4, name=牙牙}, {score=3, name=狗蛋}]//---------------------------------------------------------------------- // TODO :根据索引移除list中的元素 myList.remove(0); System.out.println("移除索引0后: "+myList); //移除索引0后: [{score=4, name=牙牙}] }

更多关于集合的操作可以参考:

6.List、Map的深克隆

list和map是引用类型数据结构,常常因为复制了他们,而出现一系列问题。所以在复制的时候,我们要用深克隆来切断他和复制品的联系。

//Map的深克隆(真深克隆,用序列化处理。)    public  
T clone(Map
obj) {
T clonedObj = null; try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(obj); oos.close(); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); clonedObj = (T) ois.readObject(); ois.close(); } catch (Exception e) {
e.printStackTrace(); } return clonedObj; } //List的深克隆 public
List
deepCopy(List
src) throws Exception{
ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(src); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in = new ObjectInputStream(byteIn); @SuppressWarnings("unchecked") List
dest = (List
) in.readObject(); return dest; }

转载地址:http://pomen.baihongyu.com/

你可能感兴趣的文章
520. 检测大写字母
查看>>
数据处理和训练模型的技巧
查看>>
vb 中如何做同步 异步?
查看>>
geturl
查看>>
2016年安大校赛(补题)
查看>>
BESTCODER ROUND92 1001.Skip the Class
查看>>
POJ 1661 Help Jimmy
查看>>
百练OJ 2755 神奇的口袋(递归+递推)
查看>>
HDU 1003 Max Sum
查看>>
Code Vs 1014 装箱
查看>>
循环队列,队链的实现
查看>>
HDU 2602 Bone Collector (01背包)
查看>>
POJ 1837 Blance (01背包)
查看>>
HDU 2456 饭卡 (01背包)
查看>>
HDU 1559 最大子矩阵
查看>>
Open Judge 4010 :2011
查看>>
百练OJ-2815 城堡问题【DFS】
查看>>
CODE[VS] 1025 选菜 【背包】
查看>>
POJ 1724 ROADS【DFS+剪枝】
查看>>
AOJ 847 整数拆段
查看>>