一个List中有多个表的对象 表对象有5个字段,所有对象的count字段都为1,现在想把name相等的对象合并,并且count会变成合并了几个就变为几。。。就是List中有10个表对象,其中3个对象的name相等,就把他们合并为8个,并且那个3合一的对象count是3
11条回答
- 极光舞者 2016-10-28 01:29关注
1.重写equals方法,name相同即为相等
2.新建一个List,用来放结果。
3.遍历旧的List,如果新的list中存在名字相同的,则新的List中该元素的count+1. 如果不存在,则放入新的List示例代码:
//测试类
public class ListTest {
public static void main(String[] args) {List<ListTestObject> oldList = new ArrayList<>(); //模拟数据 oldList.add(new ListTestObject("jack", 1)); oldList.add(new ListTestObject("jerry", 1)); oldList.add(new ListTestObject("jone", 1)); oldList.add(new ListTestObject("jerry", 1)); oldList.add(new ListTestObject("jone", 1)); List<ListTestObject> newList = new ArrayList<>(); for (ListTestObject testObjOld : oldList) { // 遍历新的List,看是否存在,存在则count加一,不存在则放入新的List boolean flag = false; for (ListTestObject testObjNew : newList) { if (testObjNew.equals(testObjOld)) { // 新的List中存在名字相同的,则count+1 testObjNew.setCount(testObjNew.getCount() + 1); flag = true; } } // 新的List中不存在 if (!flag) { newList.add(testObjOld); } } System.out.println(newList); }
}
//实体类
public class ListTestObject {
private String name;
private int count;
//因为示例只用了name,count,另外3个属性先不写。public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public ListTestObject(String name, int count) { super(); this.name = name; this.count = count; } @Override public boolean equals(Object obj) { ListTestObject testObj; try { testObj = (ListTestObject) obj; } catch (Exception e) { //类不同,直接返回false return false; } if(testObj.getName().equals(this.getName())){ return true; } return false; } @Override public String toString() { return "ListTestObject [name=" + name + ", count=" + count + "]"; }
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
- ¥15 python爬取bilibili校园招聘网站
- ¥30 求解达问题(有红包)
- ¥15 请解包一个pak文件