一个多月没写东西了,不是忙,是懒。所以今天写个小东西。
在日常的项目开发中,经常会将一个自己的实体装到一个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 + "]";
}
}
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());
}
}
}
具体就写到这,如果有疑问的朋友可以留言。 基本上一周之内是会有答复的。
本文介绍如何将Java实体类封装到List集合中,并定义自定义方法以简化代码,避免每次使用时重复相同的操作。示例代码展示了如何创建实体类以及测试类,提倡在实体中有多个相同类型属性时通过参数区分,不推荐过多增加方法。
3253

被折叠的 条评论
为什么被折叠?



