arraylist-list去重并且比对的问题

问题描述

list去重并且比对的问题

一个arraylist里放了多个map 每个map里有 id,quantity,
请问如何去掉重复的map数据并且把id相同的map的quantity相加

解决方案

python中list去重问题
Python中List的去重问题

解决方案二:

写循环判断呗 还能怎么搞

解决方案三:

用循环遍历arraylist,然后对map进行比较,你可以使用map1.equals(map2),如果相等的话,就返回true,然后你就可以删除。过滤之后,在进行相加就可以

解决方案四:

一个一个取map的值,然后放进list中,放进去之前,先判断是否存在id,如查存在,刚相加quantity。

解决方案五:

先把你的 arraylist =》 Map>
第二步 循环map 并把list 在循环相加

解决方案六:

先把你的 arraylist =》 Map《id,List《quantity》》
第二步 循环map 并把list 在循环相加

解决方案七:

public class Sample {

public static void main(String[] args) {

    //构造list
    List<Map<String,Integer>> list=new ArrayList<Map<String,Integer>>();
    Integer[] quantity=new Integer[]{12,13,14,12,13,16,13,14,12,13};
    for (int i = 0; i < quantity.length; i++) {
        Map<String,Integer> map=new HashMap<String,Integer>();
        map.put("id", i);
        map.put("quantity", quantity[i]);
        list.add(map);
        if(i==2 || i==4 || i==6 ){
            map.put("id", i);
            map.put("quantity", quantity[i]);
            list.add(map);
        }
    }

    //去重
    Set<Map<String,Integer>> set=new HashSet<Map<String,Integer>>();
    for (int j=list.size()-1; j>=0; j--) {
        set.add(list.get(j));
    }

    //求和
    int sum=0;
    for (Iterator<Map<String, Integer>> it = set.iterator(); it.hasNext();) {
        Map<String, Integer> map = (Map<String, Integer>) it.next();
        sum+=map.get("quantity");

    }

    System.out.println(set.toString());
    System.out.println(sum);

}

}


解决方案八:

没看清楚 搞错了 (⊙﹏⊙)b

解决方案九:

对list进行循环取值,然后比较map就行

解决方案十:

循环判断从第一个开始有一样的就加上,然后删掉,最后就剩加完的第一个map,然后从下一个继续遍历

时间: 2024-09-20 00:03:51

arraylist-list去重并且比对的问题的相关文章

arrayList去重对象

问题描述 List<demo>list=newArrayList<demo>();demos=newdemo("2013-1-1","11");demos1=newdemo("2013-1-1","15");demos25=newdemo("2013-1-2","13");demos21=new("2013-1-3","22"

Java中ArrayList的使用方法简单介绍_java

ArrayList没有封装好的去重方法,比如对于一个[2, 5, 2, 3, 2, 4]的ArrayList,我要去除其中的重复的元素, 我也不想把语句也这么长,也不想用for循环的方法去重,那么可以先考虑把ArrayList转化为一个临时的HashSet,再把这个临时的HashSet转化回ArrayList,因为HashSet里面的元素是不可重复的嘛!至于什么是ArrayList与HashSet,在<详解java中的Collections类>已经说得很清楚了,这里不再赘述.  你可以这样写:

java-两个list去重并合并的问题

问题描述 两个list去重并合并的问题 有两个List list1 list2 list1 : [10583601 10584601]list2 : [10583601 10583611]每个元素前7位为标识位 最后一位为数量 以list1位基础 如果list2中的元素在list1中存在 则修改list1中的数量 (比如10583601在list1中存在也在list2中存在 则把list1中的10583601改为10583602).如果不存在则往list1中添加该元素 最后得出的结果应该是 li

equals-Arraylist 去重复时编写去重方法没有运行找不到错误在哪?求大神帮看一下

问题描述 Arraylist 去重复时编写去重方法没有运行找不到错误在哪?求大神帮看一下 class Person { private String name; private int age; Person (String nameint age) { this.name = name; this.age =age; } public void setName(String name) { this.name = name; } public void setAge(int age) { th

java list去重操作实现方式_java

     在开发过程中,碰到生成一个List对象,需要对其里面的每个对象都进行校验.但是,这个List有时候存在重复的数据.因此需要进行去重,以避免重复的校验. 1.不带类型写法: List listWithoutDup = new ArrayList(new HashSet(listWithDup)); 2.带类型写法(以String类型为例): 1)Java 7以下写法: List<string> listWithoutDup = new ArrayList<string>(n

js史上最简单的数组合并去重排序

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/jquery-2.1.4.js"></script> <script type="text/javascript"

Java中vector理解2——vector和arrayList的区别

这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复.3个具体实现类的相关区别如下: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制

Java Collection笔记之ArrayList

1.前言 ArrayList 是一个数组队列,相当于动态数组.与Java中的数组相比,它的容量能动态增长.它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口. ArrayList 继承了AbstractList,实现了List.它是一个数组队列,提供了相关的添加.删除.修改.遍历等功能. ArrayList实现了RandmoAccess接口,即提供了随机访问功能.RandmoAccess是java

数据库-关于resultset读取和arraylist保存的问题

问题描述 关于resultset读取和arraylist保存的问题 1C String sql =""select * from shop_something ""; ResultSet re = db.query(sql); ResultSetMetaData md =re.getMetaData(); dish some= new dish(); ArrayList<dish> list= new ArrayList(); while(re.next