Java List根据对象的某个属性合并list
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的更多相关文章
- Java反射获取对象VO的属性值(通过Getter方法)
有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...
- java list按照 对象 指定多个字段属性进行排序
ListUtils.Java---功能类 package PjectUtils; import java.lang.reflect.Field; import java.text.NumberForm ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别
Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...
- 运行时给java对象动态的属性赋值
运行时给java对象动态的属性赋值 如何给java对象动态的属性赋值(也就是在代码执行的时候才决定给哪个属性赋值) 1.自定义一个工具类ReflectHelper,代码如下所示: pa ...
- 组件 computed 与 vuex 中 getters 的使用,及 mapGetters 的使用,对象上追加属性,合并对象
vue 是响应式的数据,这一点相当的方便我们的操作,但有些错误的操作方法会 vue 的响应无效 除此之外我们还要了解 vue.set() 和 Object.assgin() 的使用 vue.set() ...
- JAVA中JavaBean对象之间属性拷贝的方法
JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...
- 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更
java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
随机推荐
- Oracle篇 之 查询行及概念
Oracle: s_emp s_dept s_region 行:Row(tuple) 列:Column(attribute) conn:改变用户 Drop:删除用户 drop user bri ...
- SPOJ-LCS Longest Common Substring 【后缀自动机】
题目分析: 用没出现过的字符搞拼接.搞出right树,找right集合的最小和最大.如果最小和最大分居两侧可以更新答案. 代码: #include<bits/stdc++.h> using ...
- MT【313】特征方程逆用
已知实数$a,b,x,y$满足\begin{equation}\left\{ \begin{aligned} ax+by &= 3 \\ ax^2+by^2&=7\\ ax^3+by^ ...
- Linux交换分区使用过多的处理办法
处理办法 echo "vm.swappiness=0" >>/etc/sysctl.conf sysctl -p swapoff -a && swapo ...
- response 输出中文数据 文件下载
使用OutputStream或者PrintWriter向客户端浏览器输出中文数据 package com.xc.response; import java.io.IOException; import ...
- <三>企业级开源仓库nexus3实战应用–使用nexus3配置maven私有仓库
一两个星期之前,你如果在我跟前说起私服的事情,我大概会绕着你走,因为我对这个东西真的一窍不通.事实上也正如此,开发同学曾不止一次的跟我说公司的私服版本太旧了,许多新的依赖编译之后不会从远程仓库自动缓存 ...
- MySQL查看SQL语句执行效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好 ...
- Vim使用技巧汇总
一 写在开头 1.1 本文内容 Vim使用技巧与学习资源汇总. 二 Vim学习资源 1. Vimtutor 2. Vim中文帮助(http://vimcdoc.sourceforge.net/doc/ ...
- [再寄小读者之数学篇](2014-06-23 二阶导数估计 [中国科学技术大学2013年高等数学B 考研试题])
设 $f(x)$ 二阶连续可导, $f(0)=f(1)=0$, $\dps{\max_{0\leq x\leq 1}f(x)=2}$. 证明: $$\bex \min_{0\leq x\leq 1}f ...
- python3 udp版简单的聊天器
单任务的聊天系统. 获取键盘数据,并将其发送给对方 接收数据并显示 并且功能数据进行选择以上的2个功能调用 代码实现 import socket def send_msg(udp_socket): & ...