java 有序不重复_Java中自定义有序不重复的集合——SetList

由于课程设计的需要,笔者需要将数据库中的某个表的数据拿出来处理

例如楼层和建筑表,有外键限制

一开始是使用List保存的,但实际操作中发现,从表中取出来楼层数据中的建筑有些是重复的

List接口实现的存储是有序可重复的,Set接口是无序不重复的,不能用下标定位数据

结合他们之间的优缺点和数据量,在不考虑性能的情况下,笔者写了有序不重复的集合

总体是基于LinkedList实现的,重写其add方法

List为空,就直接添加对象,不为空,就遍历List,判断其中中是否有与待插入的对象是否相同

SetList类如下

public class SetList extends LinkedList {

private static final long serialVersionUID = 1434324234L;

@Override

public boolean add(T object) {

if (size() == 0) {

return super.add(object);

} else {

int count = 0;

for (T t : this) {

if (t.equals(object)) {

count++;

break;

}

}

if (count == 0) {

return super.add(object);

} else {

return false;

}

}

}

}

Person类

public class Person {

private int id, age;

private String name, sex;

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Person other = (Person) obj;

if (id != other.id)

return false;

return true;

}

@Override

public String toString() {

return "Person [id=" + id + ", age=" + age + ", name=" + name

+ ", sex=" + sex + "]";

}

//省略构造器、get和set等

}

调用

@Test

public void test(){

List list = new SetList<>();

list.add(new Person(1, 20, "小明", "男"));

list.add(new Person(2, 20, "小红", "女"));

list.add(new Person(2, 20, "小花", "女"));

list.add(new Person(4, 20, "小辉", "未知"));

System.out.println(list);

}

输出结果

[Person [id=1, age=20, name=小明, sex=男], Person [id=2, age=20, name=小红, sex=女], Person [id=4, age=20, name=小辉, sex=未知]]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值