package com.test;

import java.util.ArrayList;
import java.util.List; public class FileTest {
public static void main(String[] args) {
List<FileBean> beans=new ArrayList<FileBean>();
FileBean bean1=new FileBean();
bean1.setDirectory("path1");
bean1.setSize(20);
beans.add(bean1);
FileBean bean2=new FileBean();
bean2.setDirectory("path1");
bean2.setSize(30);
beans.add(bean2);
FileBean bean3=new FileBean();
bean3.setDirectory("path1");
bean3.setSize(40);
beans.add(bean3);
FileBean bean4=new FileBean();
bean4.setDirectory("path2");
bean4.setSize(50);
beans.add(bean4);
FileBean bean5=new FileBean();
bean5.setDirectory("path2");
bean5.setSize(60);
beans.add(bean5);
FileBean bean6=new FileBean();
bean6.setDirectory("path3");
bean6.setSize(70);
beans.add(bean6);
FileBean bean7=new FileBean();
bean7.setDirectory("path3");
bean7.setSize(80);
beans.add(bean7);
FileBean bean8=new FileBean();
bean8.setDirectory("path3");
bean8.setSize(90);
beans.add(bean8);
List<FileBean> result = transferFilebean(beans);
System.out.println(result.size());
for(int i = 0; i< result.size();i++){
FileBean bean = result.get(i);
System.out.println(bean.getDirectory() + ";" + bean.getSize()); }
} public static List<FileBean> transferFilebean(List<FileBean> beans){
List<FileBean> result = new ArrayList<FileBean>(); if(beans == null){
return result;
}
for(int i = 0; i< beans.size();i++){
FileBean bean = beans.get(i);
if(!result.contains(bean)){
for(int j = i+1; j< beans.size();j++){
FileBean bean2 = beans.get(j);
if(bean.equals(bean2)){
bean.setSize(bean.getSize()+bean2.getSize());
}
}
result.add(bean);
}
}
return result;
} } class FileBean {
private String directory;
private long size;
private int dirNum;
public String getDirectory() {
return directory;
}
public void setDirectory(String directory) {
this.directory = directory;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
} public int getDirNum() {
return dirNum;
}
public void setDirNum(int dirNum) {
this.dirNum = dirNum;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((directory == null) ? 0 : directory.hashCode());
result = prime * result + (int) (size ^ (size >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
FileBean other = (FileBean) obj;
if (directory == null) {
if (other.directory != null)
return false;
} else if (!directory.equals(other.directory))
return false;
return true;
} }

Java List根据对象的某个属性合并list的更多相关文章

  1. Java反射获取对象VO的属性值(通过Getter方法)

    有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...

  2. java list按照 对象 指定多个字段属性进行排序

    ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...

  3. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  4. Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别

    Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 ​ 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...

  5. 运行时给java对象动态的属性赋值

    运行时给java对象动态的属性赋值 如何给java对象动态的属性赋值(也就是在代码执行的时候才决定给哪个属性赋值)         1.自定义一个工具类ReflectHelper,代码如下所示: pa ...

  6. 组件 computed 与 vuex 中 getters 的使用,及 mapGetters 的使用,对象上追加属性,合并对象

    vue 是响应式的数据,这一点相当的方便我们的操作,但有些错误的操作方法会 vue 的响应无效 除此之外我们还要了解 vue.set() 和 Object.assgin() 的使用 vue.set() ...

  7. JAVA中JavaBean对象之间属性拷贝的方法

    JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...

  8. 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

    java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...

  9. 将java中Map对象转为有相同属性的类对象(json作为中间转换)

    java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...

随机推荐

  1. C#操作session的类实例(转)

    using System.Web; namespace DotNet.Utilities { public static class SessionHelper2 { /// <summary& ...

  2. 51nod 1318 最大公约数与最小公倍数方程组(2-SAT)

    题意 给你 \(n\) 个元素,\(m\) 个方程. 每个方程形如 \[ \begin{align} \gcd(x_i, y_i)=c_i\\ \mathrm{lcm}(x_i,y_i) = d_i ...

  3. OpenLayers学习笔记(九)— 限制地图显示范围

    openlayers 3 地图上限制地图显示及拖动范围,坐标系是4326转3857,中心经纬度精确到小数点后六位,减少误差 GitHub:八至 作者:狐狸家的鱼 本文链接:ol3-限制地图显示及拖动范 ...

  4. Math & Number Theory

    数学 数论: 莫比乌斯反演 矩阵游戏 小学数学,欧拉定理 组合: 线性代数: 高斯消元 其他: 一些题目

  5. Django 中使用kindeditor

    KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...

  6. 洛谷P2120 [ZJOI2007]仓库建设 斜率优化DP

    做的第一道斜率优化\(DP\)QwQ 原题链接1/原题链接2 首先考虑\(O(n^2)\)的做法:设\(f[i]\)表示在\(i\)处建仓库的最小费用,则有转移方程: \(f[i]=min\{f[j] ...

  7. matplotlib绘图总结

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. from p ...

  8. Eclipse 添加 Source 源代码、Javadoc 文档

    源代码 Source 按住 Ctrl 键,鼠标放到对应的类.方法上,出现 Open Declaration,Open Implementation ,可查看对应的实现.声明源代码. 也可以在[Proj ...

  9. LFYZ-OJ ID: 1021 邮票问题

    邮票问题 Problem Description 设有已知面额的邮票m种,每种有n张,用总数不超过n张的邮票,能从面额1开始,最多连续组成多少面额.(1≤m≤100,1≤n≤100,1≤邮票面额≤25 ...

  10. iTOP-iMX6开发板-Android-can测试例程介绍

    TOP-iMX6开发板的 Android 源码的 can 例程包含在 Android 源码中,在“ packages/apps/”目 录下,如下图所示,这个是应用界面的源码.   如下图所示,can ...