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

来源:互联网 发布:网络拓扑图图标素材 编辑:程序博客网 时间:2024/06/13 01:12

需要将数据库中的某个表的数据拿出来处理

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

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

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

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

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

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

SetList类如下

[java] view plain copy
  1. public class SetList<T> extends LinkedList<T> {  
  2.     private static final long serialVersionUID = 1434324234L;  
  3.   
  4.     @Override  
  5.     public boolean add(T object) {  
  6.         if (size() == 0) {  
  7.             return super.add(object);  
  8.         } else {  
  9.             int count = 0;  
  10.             for (T t : this) {  
  11.                 if (t.equals(object)) {  
  12.                     count++;  
  13.                     break;  
  14.                 }  
  15.             }  
  16.             if (count == 0) {  
  17.                 return super.add(object);  
  18.             } else {  
  19.                 return false;  
  20.             }  
  21.         }  
  22.     }  
  23. }  



Person类

[java] view plain copy
  1. public class Person {  
  2.     private int id, age;  
  3.     private String name, sex;  
  4.       
  5.     @Override  
  6.     public boolean equals(Object obj) {  
  7.         if (this == obj)  
  8.             return true;  
  9.         if (obj == null)  
  10.             return false;  
  11.         if (getClass() != obj.getClass())  
  12.             return false;  
  13.         Person other = (Person) obj;  
  14.         if (id != other.id)  
  15.             return false;  
  16.         return true;  
  17.     }  
  18.       
  19.       
  20.     @Override  
  21.     public String toString() {  
  22.         return "Person [id=" + id + ", age=" + age + ", name=" + name  
  23.                 + ", sex=" + sex + "]";  
  24.     }  
  25.         //省略构造器、get和set等  
  26.       
  27. }  



调用

[java] view plain copy
  1. @Test  
  2. public void test(){  
  3.     List<Person> list = new SetList<>();  
  4.     list.add(new Person(120"小明""男"));  
  5.     list.add(new Person(220"小红""女"));  
  6.     list.add(new Person(220"小花""女"));  
  7.     list.add(new Person(420"小辉""未知"));  
  8.           
  9.     System.out.println(list);  
  10. }  


输出结果

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

0 0
原创粉丝点击