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. 洛谷P1220关路灯题解

    题目 此题是一个状态转移方程还算比较多的一个区间DP,这个题也能启示我们如果某个状态不能够很好地解决问题,那么不妨试试再加一维,而且如果转移顺序不确定的话,可以试试记忆化搜索,说不定就可以比较容易的写 ...

  2. [luogu3380][bzoj3196]【模板】二逼平衡树【树套树】

    题目地址 [洛谷传送门] 题目大意 区间查询k的排名,查找k排名的数,单点修改,区间前驱,区间后继. 感想 真的第一次写树套树,整个人都不对了.重构代码2次,发现样例都过不了,splay直接爆炸,可能 ...

  3. 清北学堂Day2

    算数基本定理: 1.整数及其相关 2.唯一分解定理 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>= ...

  4. 来自多校的一个题——数位DP+卡位

    n<=1e9就要考虑倍增.矩阵乘法这种了 假设L=0 考虑枚举二进制下,所有X与R的LCP长度,前len高位 对于第len+1位,假设R的这一位是1 如果一个x的这一位是0了,那么后面可以随便填 ...

  5. Springboot 2.返回cookies信息的get接口开发 和 带cookis去请求

    首先要有一个启动类,默认的启动类的名字就是Application.java.启动的时候直接右键点击run就可以 Application.java: import org.springframework ...

  6. 【SQL】INSERT INTO SELECT语句与SELECT INTO FROM语句

    INSERT INTO SELECT语句与SELECT INTO FROM语句,都是将一个结果集插入到一个表中: #INSERT INTO SELECT语句 1.语法形式: Insert into T ...

  7. java 为什么wait(),notify(),notifyAll()必须在同步(Synchronized)方法/代码块中调用?

    wait()作用:该方法用来将当前线程置入休眠状态,直到接到通知或被中断为止.条件:在调用wait()之前,线程必须要获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法.进入wai ...

  8. INI配置文件的格式

    为什么要用INI文件?如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要 ...

  9. Nginx虚拟主机 子文件单独配置

    上一篇所有的server 全都配置在nginx.conf配置文件里,其实每个server 都可以单独做一个子文件 删除nginx.conf配置文件中的server及其余内容,加上如下图 创建保存每个虚 ...

  10. C#获取应用程序路径

    string s = Environment.CurrentDirectory; //需添加Forms.DLL s = System.Windows.Forms.Application.Startup ...