`
knight_black_bob
  • 浏览: 825248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

两个不同的list 有相同的 主键 快速 融合

    博客分类:
  • java
 
阅读更多

两个不同的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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

  • 大小: 3.7 KB
分享到:
评论

相关推荐

    ext6.5 sencha 必须的两个主键

    ext6 必要的两个主键 不可或缺 主要用于创建对象 自定义对象,以实现继承,自定义的功能

    SQL判断表是否有主键,如何添加主键和移除主键

    SQL判断表是否有主键,如何添加主键和移除主键 这是一个很好的例子个大家分享,以后我会及时更新

    MySQL 主键与索引的联系与区别分析

    主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键...

    Mysql主键和唯一键的区别点总结

    什么是主键? 主键是表中唯一标识该表中每个元组(行)...在上面的示例中,roll_number属性永远不能具有相同的NULL值,因为在每个大学中注册的学生都拥有唯一的Roll_number,因此两个学生不能拥有相同的Roll_number,并

    ssh多主键插入

    多主键(ssh中一表有多个主键进行插入)

    删除无主键重复语句

    删除无主键重复语句删除无主键重复语句删除无主键重复语句删除无主键重复语句

    数据库主键生成资料资源

    数据库主键生成,对主键的操作,主键,标识记录,找到记录 主键

    获取数据库所有主键获取数据库所有主键

    获取数据库所有主键获取数据库所有主键获取数据库所有主键获取数据库所有主键获取数据库所有主键获取数据库所有主键

    mybatis自增主键文档

    mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键,至于其他的手动生成唯一主键的问题在这里就不讨论了,这里主要说明下...

    Powerdesigner 设计主键code不能重复等问题

    Powerdesigner 设计主键code不能重复等问题

    在数据库中同时创键多个主键案例分析.doc

    如果你想给表中多个字段设置主键的时候,那在建表的时候,必须同时创建,如果当初建表的时候,只创建了一个主键,但是后来你还想往里边在设置一个主键,那是不允许的,创键多个主键时必须要同时创建。

    JPA学习笔记-EJB-03JPA主键生成策略总结

    第一种单字段主键类型,看上去简单,无非就是一个id字段呗,实际上这个主键字段在JPA,还有任何的ORM框架中都是有很多种生成策略的。 一般是如下4种: 1. AUTO:自动自增生成 2. TABLE:自定义表生成器 3. Identity...

    sqlserver无主键表的同步方案1

    背景介绍对sqlserver做数据库同步的时候,由于医院服务器和数据库版本的限制,选择了用发布订阅处理数据库同步,但是这个方式只能处理有主键的表,对于无主键的表

    sqlserver在有数据情况下修改主键为自增1

    sqlserver在有数据情况下修改主键为自增 网上方法都有缺陷 自己写了一个版本,欢迎大家参考,不好用吗,大家都不评价

    hibernate 无主键表映射

    hibernate 无主键表映射资源说明: 1. 简单Demo 2. Demo对应的sql语句 3. 对应博客文档

    Hibernate注解映射联合主键

    联合主键用Hibernate注解映射方式主要有三种: 第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键...

    hibernate主键生成策略详解

    Hibernate各种主键生成策略与配置详解 1、assigned 主键由外部程序负责生成,在 save() 之前...在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。

    hibernate复合主键的实例

    hibernate复合主键的实例,hibernate复合主键的实例。

    Hibernate主键生成方式

    Hibernate主键生成方式 1.identity方式 2.increment方式 3.assigned方式 4.sequence方式 5.native方式 6.UUID方式

    hibernate复合主键映射

    复合主键映射 &lt;br&gt;通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射

Global site tag (gtag.js) - Google Analytics