【问题标题】:how to make fields of arraylist unique? [closed]如何使arraylist的字段唯一? [关闭]
【发布时间】:2012-05-14 08:37:38
【问题描述】:
class Employee implements Comparable<Employee> 
{

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

//getter 和 setter

}
 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”以检查重复项,但它仍然无法正常工作???

【问题讨论】:

  • 这里的人喜欢帮助那些自助的人......看到这个:please reply ASAP with code......这不会让你走得太远......
  • 如果这是家庭作业,应该用[homework]标签标记。

标签: java collections arraylist unique-key


【解决方案1】:

听起来你想使用Set,而不是列表:

不包含重复元素的集合。更正式地说,集合 不包含元素对 e1 和 e2 使得 e1.equals(e2),并且在 最多一个空元素。正如它的名字所暗示的,这个接口模型 数学集合抽象。

【讨论】:

  • 如果我使用 set 那么我怎么能只将非重复性限制为 id,即只有 id 不能重复但名称可以
【解决方案2】:

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

如果您想对某些内容进行排序,可以使用 TreeSet 实现。

【讨论】:

  • 我明白了,但是......我的问题是如何从一个对象的 4 个实体中挑选一个实体
  • 也许使用像HashMap 这样的键/值结构会有所帮助。你的键是id,你的值是Employee 对象。它将确保没有重复的密钥(ID),您可以通过id 获取Employee
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    如果你死心塌地使用 ArrayList,也许你应该扩展它并实现你自己的 add 函数。

    【讨论】:

    • 我们不能只从arraylist对象中提取一个字段吗???
    • 我不确定您所说的“选择一个字段”是什么意思。据我了解,您希望有一个 List 具有某种 Unique 关键成员/属性,并且您不希望在 that 字段中重复。 ArrayList 的默认实现不支持此功能,因此如果您想要该功能,您必须实现自己的 List 或使用不同的类,例如 Set
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多