如何使arraylist领域独一无二?

时间:2012-05-14 08:37:39

标签: java collections arraylist unique-key

class Employee implements Comparable<Employee> 
{

    public Employee(int id, String name,int salary ,String designation)
    {..}

// getters and setters

}
 public class TestEmployeeSort
{
     public static void main(String[] args) 
     {
         List<Employee> col = new ArrayList<Employee>();
             Employee one =  new Employee(**2**, "rahul",100, "bc");
         Employee oone =  new Employee(**2**, "sfdful",1300, "bdfsc");
         col.add(one);
         col.add(oone);

     }
}

这里我创建了一个程序,其中对象中的4个字段现在从arraylist对象传递名为id,name,salary和designation我想从4个中选择一个对象的实体,使用名为“id”并想要制作它唯一的,所以不能插入具有重复id的对象...(类似于set的工作但不想在这里使用set)如何才能完成 .....我尝试在构造函数中创建一个方法并在一个集合中传递“this.id”以检查重复但仍然无法正常工作???

4 个答案:

答案 0 :(得分:3)

听起来好像要使用Set,而不是List:

  

不包含重复元素的集合。更正式的,集合   不包含元素e1和e2对,使得e1.equals(e2)和at   大多数一个null元素。正如其名称所暗示的,这个界面模型   数学集抽象。

答案 1 :(得分:3)

您可以使用java.util.Set实施而不是List来确保其中没有重复项。这取决于equals,必须将其用于比较ID。

如果您想要排序某些内容,可以使用TreeSet实施。

答案 2 :(得分:2)

我建议创建一个扩展ArrayList的类,并覆盖add方法,所以当你尝试插入时,首先调用contains方法,如果它已经在列表中,则返回false:

@Override
public boolean add(E e){
 if(super.contains(e){
    return false;
 }else{
    super.add(e);
 }
return true;
}

答案 3 :(得分:0)

如果你已经开始使用ArrayList了,也许你应该扩展它并实现你自己的add函数。