如何将自己的实体类封装到一个list中,定义自己一系列的方法

本文介绍如何将Java实体类封装到List集合中,并定义自定义方法以简化代码,避免每次使用时重复相同的操作。示例代码展示了如何创建实体类以及测试类,提倡在实体中有多个相同类型属性时通过参数区分,不推荐过多增加方法。

一个多月没写东西了,不是忙,是懒。所以今天写个小东西。

在日常的项目开发中,经常会将一个自己的实体装到一个list的集合中,对数据进行操作,单有一个比较蛋疼的问题,就是如果直接在要用的时候去new的话,进行移除,代码看着那是相当揪心,而且每次用的时候都会做同样的事情,所以干脆直接定义一个list 封装起来。 下面直接上代码。因为打字很累,我懒。


实体类

package com.list.main;

public class Entity {
	
	private int x;
	private String tt;
	
	
	public Entity(int x, String tt) {
		super();
		this.x = x;
		this.tt = tt;
	}


	public int getX() {
		return x;
	}


	public void setX(int x) {
		this.x = x;
	}


	public String getTt() {
		return tt;
	}


	public void setTt(String tt) {
		this.tt = tt;
	}


	@Override
	public String toString() {
		return "Entity [x=" + x + ", tt=" + tt + "]";
	}
	


}


封装list类

package com.list.main;

import java.util.ArrayList;
import java.util.Iterator;

import org.omg.PortableInterceptor.Interceptor;

public class Entities extends ArrayList<Entity> {
    
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Entities() {
	}
	
	
	
	/**
	 * 用迭代器可以完美移除,更重要的一点事迭代器的方式是线程安全的,也就是一边遍历一边移除是不会出问题的
	 * 所以一般推荐大家使用
	 * @param tt
	 */
	public void removeByTt(String tt) {
		Iterator<Entity> iterator = this.iterator();
		
		while( iterator.hasNext()){
			if(iterator.next().getTt().equals(tt)){
				iterator.remove();
			}
		}
	}
	
	
	/**
	 * 报错ava.util.ConcurrentModificationException
	 * 有兴趣的可以百度一下,很简单的
	 * @param tt
	 */
//	public void removeByTt(String tt) {
//		for(Entity en : this){
//			if(en.getTt().equals(tt)){
//				remove(en);
//			}
//		}
//	}
//	
	
	/**
	 * 移除不干净的,想一下 这样的移除 循环条件size 是变的
	 */
//	public void removeByTt(String tt) {
//		for(int i = 0; i < size(); i++){
//			if(get(i).getTt().equals(tt)){
//				remove(i);
//			}
//		}
//	}

}


如果实体中有多个的同类型的话,建议是添加参数进行区分,不建议添加很多的方法。


测试类

package com.list.main;

public class MainRT {
	
	public static void main(String[] args) {
		Entities ens = new Entities();
		
		for(int i = 0; i < 10; i++){
			Entity en = new Entity(i, 1 + "-string");
			ens.add(en);
		}
		
		ens.removeByTt(1 + "-string");
		
		for(int j = 0; j < ens.size(); j++){
			System.out.println(ens.get(j).toString());
		}
	}
	

}

具体就写到这,如果有疑问的朋友可以留言。 基本上一周之内是会有答复的。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值