两个不同的list 有相同的 主键 快速 融合
package java2015.java07.java; import java.util.ArrayList; import java.util.List; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月8日 下午4:06:41 * 类说明: */ public class Test { static List<Student> slist = new ArrayList<Student>(); static List<ClazzStudentRelation> clist = new ArrayList<ClazzStudentRelation>(); static { for (int i = 1; i <= 5; i++) { slist.add( new Student(i+"", i+"") ); } for (int i = 1; i <= 2; i++) { clist.add(new ClazzStudentRelation(i+"", i+"") ); } } public static void main(String[] args) { List<StudentVO> svolist = new ArrayList<StudentVO>(); for (int i = 0; i < slist.size(); i++) { Student st = slist.get(i); StudentVO stvo = new StudentVO(st); if (clist.contains(new ClazzStudentRelation(st.getId()))) { stvo.setClazzId(getClazzStudentRelation(clist, st.getId()).getClazzId()); } svolist.add(stvo); } for (int i = 0; i < svolist.size(); i++) { System.out.println(svolist.get(i)); } } private static ClazzStudentRelation getClazzStudentRelation(List<ClazzStudentRelation> clist , String id){ for (int i = 0; i < clist.size(); i++) { ClazzStudentRelation csr = clist.get(i); if ( id .equals(csr.getUserid()) ) { return csr; } } return null; } } class Student { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Student(){} public Student(String id, String name) { this.id = id; this.name = name; } } class ClazzStudentRelation{ private String userid; private String clazzId; public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getClazzId() { return clazzId; } public void setClazzId(String clazzId) { this.clazzId = clazzId; } public ClazzStudentRelation(){} public ClazzStudentRelation(String userid ) { this.userid = userid; } public ClazzStudentRelation(String userid, String clazzId) { this.userid = userid; this.clazzId = clazzId; } @Override public boolean equals(Object obj) { if (obj != null) if (obj instanceof ClazzStudentRelation) return this.userid .equals(((ClazzStudentRelation) obj).getUserid()); return false; } } class StudentVO extends Student{ StudentVO(Student student ){ setId(student.getId()); setName(student.getName()); } private String clazzId; public String getClazzId() { return clazzId; } public void setClazzId(String clazzId) { this.clazzId = clazzId; } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append (getClass().getName().substring(getClass().getName().lastIndexOf(".")+1, getClass().getName().length())); sb.append(":["); sb.append("\"id\":\"" +getId()+"\"," ); sb.append("\"name\":\"" +getName()+"\"," ); sb.append("\"clazzId\":\"" +clazzId+"\"" ); sb.append("]"); return sb.toString() ; } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
- 如果发现两个列表中有相同的`Student`对象,则从第一个列表中移除该对象。 - 移除后需要更新循环变量,以避免遗漏元素。 3. **使用`Iterator`遍历结果列表**: - 最后,使用`Iterator`来安全地遍历剩余的`...
ext6 必要的两个主键 不可或缺 主要用于创建对象 自定义对象,以实现继承,自定义的功能
在数据库设计中,如果一个实体的唯一标识由两个或更多个字段共同组成,那么这些字段就构成了复合主键。例如,一个订单可能由客户ID和订单号共同唯一标识,而不是只有一个字段。 在Hibernate中,无主键表映射通常...
SQL判断表是否有主键,如何添加主键和移除主键 这是一个很好的例子个大家分享,以后我会及时更新
在复合主键类中,equals 方法需要根据多个字段来比较两个对象是否相等。例如,在 RecordId 类中,我们可以按照以下方式来实现 equals 方法: ```java @Override public boolean equals(Object obj) { if (this == ...
这样,编号和身份证号两个字段同时变成了主键字段。 案例四:向已有表字段添加复合创键 如果已经创建了表,但后来想添加复合主键字段,可以使用 alter table 语句,例如: ```sql alter table tab18 add primary ...
在数据库设计中,主键和外键是两个关键的概念,它们在确保数据的完整性和一致性方面发挥着重要作用。主键和外键都是Oracle等关系型数据库管理系统(RDBMS)中的重要概念。 **主键**是定义一个表中起主要作用的数据项...
联合主键是指由两个或两个以上列组合起来唯一标识表中每一行数据的一种机制。当单个字段不足以唯一确定一条记录时,可以使用联合主键。 #### 使用JPA注解实现联合主键 在JPA中,我们可以通过`@IdClass`和`@Id`注解...
在数据库设计中,主键和外键是两个关键概念,它们是关系数据库中确保数据完整性和一致性的核心机制。本文将深入探讨主键与外键的创建,帮助初学者更好地理解这两个概念。 **主键(Primary Key)**是用于唯一标识...
在Java的持久化框架Hibernate中,主键生成策略是一个关键的概念,它决定了如何为数据库中的实体对象生成唯一的标识符(主键)。以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`...
MySQL数据库主键的类型有两种:单字段主键和复合主键。单字段主键是指由一个字段组成的主键,而复合主键是指由多个字段组成的主键。 在MySQL数据库中,主键可以使用AUTO_INCREMENT机制来自动生成主键值。这可以...
在数据库设计中,复合主键是指由两个或更多列组成的键,这些列共同构成表的唯一标识。当单一的字段无法唯一标识一条记录时,就需要使用复合主键。例如,如果有一个订单表,其中订单号和产品ID共同决定了订单项的唯一...
这种关联类型是数据库设计中的常见模式,它允许两个实体类之间通过共享相同的主键来建立关联。在Java应用中,利用Hibernate进行持久化操作时,正确配置这种关联可以帮助我们更有效地管理和检索数据。 首先,让我们...
在数据库系统中,主键扮演着至关重要的角色,它不仅用于区分不同记录,还在建立表间关联时提供锚点。 主键的特性主要有以下几点: 1. 唯一性:主键的值必须在表的所有记录中都是唯一的,不允许有重复。 2. 非空性:...
主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键...
多主键,也称为复合主键或联合主键,指的是在一个数据表中使用两个或更多的字段共同作为唯一标识符,确保每条记录的唯一性。这种设计常见于关系型数据库中,当单一字段不足以唯一标识一条记录时采用。例如,在一个...
联合主键(Composite Primary Key),是指在数据库表中使用两个或多个字段共同作为主键来唯一标识每一行记录。这种方式在实际应用中非常常见,尤其是在需要通过多维度数据来确定唯一性的场景下。 ### Hibernate联合...
在基于主键的关联中,两个实体共享相同的主键,而在基于外键的关联中,一方实体的主键作为另一方实体的外键。 标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来...
数据库主键设计是数据库设计中一个非常重要的环节,好的主键设计可以提高数据库的性能和可扩展性。本文将介绍五种常见的主键设计方法,每种方法都有其优点和缺陷。 第一种:编号作主键 这种方法是采用实际业务中的...
在传统的关系数据库中,联合主键是由两个或更多列共同构成的,每个列的值组合起来能确保行的唯一性。在JPA中,我们可以通过`@IdClass`或`@EmbeddedId`注解来定义联合主键。 #### `@IdClass` 使用`@IdClass`注解时...