两个List比较各自对象的属性相同的问题
最近做checkbox默认勾选的时候,涉及到两个list直接比较彼此对象的Id属性是否相同的问题。能力有限,想到这个笨方法。
创建一个Bean:
public class Bean { private String name;
private String id;
private String ch; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCh() {
return ch;
}
public void setCh(String ch) {
this.ch = ch;
} }
造出两个list:
Bean b1 = new Bean();
b1.setId("1");
b1.setName("n1");
Bean b2 = new Bean();
b2.setId("2");
b2.setName("n2");
Bean b3 = new Bean();
b3.setId("3");
b3.setName("n3");
Bean b4 = new Bean();
b4.setId("4");
b4.setName("n4"); Bean b5 = new Bean();
b5.setId("2");
b5.setName("n2");
Bean b6 = new Bean();
b6.setId("1");
b6.setName("n1"); List<Bean> la = new ArrayList<Bean>();
la.add(b1);
la.add(b2);
la.add(b3);
la.add(b4); List<Bean> lb = new ArrayList<Bean>();
lb.add(b5);
lb.add(b6);
写一个测试的main方法:
for(int i=0;i<la.size();i++){
if(lb.contains(la.get(i).getId())){
la.get(i).setCh("ch");
}
else{
la.get(i).setCh(" ");
}
System.out.println("eeee"+la.get(i).getId()+"-----"+la.get(i).getCh());
}
输出结果是:
eeee1-----
eeee2-----
eeee3-----
eeee4-----
这结果完全不是自己想要的,查了一下,list.contains(o),系统会对list中的每个元素e调用o.equals(e),方法,假如list中有n个元素,那么会调用n次o.equals(e),只要有一次o.equals(e)返回了true,那么list.contains(o)返回true,否则返回false,控制台打印了一下直接返回的false,顿时明白了什么。
重新修改下
for(int i=0;i<la.size();i++){
for(int k=0;k<lb.size();k++){
if(lb.get(k).getId().equals(la.get(i).getId())){
la.get(i).setCh("ch");
}
else{
la.get(i).setCh(" ");
} }
System.out.println("eeee"+la.get(i).getId()+"-----"+la.get(i).getCh()); }
输出结果:
eeee1-----ch
eeee2-----
eeee3-----
eeee4-----
这结果还是不对啊,无奈想到了debug断点调试,发现问题了,再次修改一下了。
for(int i=0;i<la.size();i++){
for(int k=0;k<lb.size();k++){
if(lb.get(k).getId().equals(la.get(i).getId())){
la.get(i).setCh("ch");
break;
}
else{
la.get(i).setCh(" ");
} }
System.out.println("eeee"+la.get(i).getId()+"-----"+la.get(i).getCh());
}
输出结果
eeee1-----ch
eeee2-----ch
eeee3-----
eeee4-----
两个List比较各自对象的属性相同的问题的更多相关文章
- 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更
java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...
- python 之 并发编程(开启子进程的两种方式,进程对象的属性)
第九章并发编程 同一个程序执行多次是多个进程 import time import os print('爹是:',os.getppid()) #父进程PID,(pycharm) print('me ...
- 有两个地方,用到了javabean对象和属性字符串值之间的转换
1.有两个地方,用到了javabean对象和属性字符串值之间的转换 2.一个是接入层spring mvc,将json字符串参数转换为javaBean.通过@RequestBody javaBean方式 ...
- js对象中属性调用.和[] 两种方式的区别
JS 调用属性一般有两种方法——点和中括号的方法. 标准格式是对象.属性(不带双引号),注意一点的是:js对象的属性,key标准是不用加引号的,加也可以,特别的情况必须加,如果key数字啊,表达式啊等 ...
- window对象的属性及事件。
不同的运行环境有不同的“顶层对象”,而在浏览器的环境中,顶层对象就是window对象.window就是指当前的浏览器窗口. 例:var a = 1: window.a; //1 1.window对象的 ...
- JavaScript中两种类型的全局对象/函数
这里所说的JavaScript指浏览器环境中的包括宿主环境在内的. 第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数. 一.核心JavaScri ...
- Javascript常用对象的属性和方法
javascript为我们提供了一些非常有用的常用内部对象和方法.用户不需要用脚本来实现这些功能.这正是基于对象编程的真正目的. 在javascript提供了string(字符串).math(数值计算 ...
- python动态获取对象的属性和方法 (转载)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...
- python 学习笔记7(类/对象的属性;特性,__getattr__)
27. 属性的__dict__系统 1)对象的属性可能来自: 其类的定义,叫做类属性 继承父类的定义 该对象实例定义(初始化对象时赋值),叫做对象属性 2)对象的属性存储在对象的 __dict__ 属 ...
随机推荐
- MyBatis源码解析【2】构建项目
有了之前的准备,今天就要开始构建学习使用的项目了.废话不多说.开始吧. 首先我用IDEA构建了一个空的maven项目,然后加入了Mybatis的依赖. <dependencies> < ...
- javascript事件冒泡
1. 事件 在浏览器客户端应用平台,基本生都是以事件驱动的,即某个事件发生,然后做出相应的动作. 浏览器的事件表示的是某些事情发生的信号.事件的阐述不是本文的重点,尚未了解的朋友,可以访问W3scho ...
- ArcGisEngine图层操作(随笔,不全)
1.加载图层: 1.1 object.AddLayer(Layer[,toindex=0]) Layer表示ILayer对象,必选,toIndex参数表示图层索引(长整型),没需求可以忽略. 1.2 ...
- Redis 错误1067:进程意外终止,Redis不能启动,Redis启动不了
Redis 错误1067:进程意外终止,Redis不能启动,Redis启动不了 >>>>>>>>>>>>>>> ...
- VBA编程的工程性规划
看过很多人写的VBA代码,一团一团的,一点规划都没有,为了VBA编程更具工程性,这里讨论一下,并列出自己的一些建议:0.给VBA工程定义一个名字,而非直接使用默认的名称——"VBAProje ...
- 怎么调试nodejs restful API 以及API的Authorization
最近Nodejs,python越来越火了,同时也越来越多的人在用node写服务,可是怎么去调试服务呢?以及当你一个服务发布出去,怎么保证其安全性呢? 环境:linux unbuntu 语言:nodej ...
- Spring MVC 以.html为后缀名访问获取数据,报406 Not Acceptable错误。
如题,最近以spring mvc作为后台框架,前端异步获取数据时(.html为后缀名的访问方式),报406 Not Acceptable错误.当初都不知道啥原因,前后台都没报错就是返回不了数据,于是查 ...
- PHP对MySQL数据库的相关操作
一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...
- maven引入已经拥有的jar包
<!-- https://mvnrepository.com/artifact/jfree/jcommon --><dependency> <groupId> ...
- Objective-C MapKit的使用-LBS简单的租车主界面demo
效果 分析 三个view:地图view.车辆信息view.车辆类型选择view 地图view:大头针的摆放,根据不同的种类显示大头针 车辆信息view:根据当前点击的大头针显示对应的车辆信息 车辆类型 ...