我有一个名为employee的类是pojo,我已经创建了这个pojo类型的列表,这是雇员类型的手段。现在我想从列表中删除重复项,请指出实现的各种方法有哪些该..
class Emp implements Comparable
{
String name,job;
int salary;
public Emp(String n,String j,int sal)
{
name=n;
job=j;
salary=sal;
}
public void display()
{
System.out.println(name+"\t"+job+"\t"+salary);
}
public boolean equals(Object o)
{
Emp p=(Emp)o;
return this.name.equals(p.name)&&this.job.equals(p.job) &&this.salary==p.salary;
}
public int hashCode()
{
return name.hashCode()+job.hashCode()+salary;
}
public int compareTo(Object o)
{
Emp e=(Emp)o;
return this.name.compareTo(e.name);
//return this.job.compareTo(e.job);
// return this.salary-e.salary;
}
}
这是我的员工类型列表..
import java.util.*;
class EmpListDemo
{
public static void main(String arg[])
{
ArrayList list=new ArrayList();
list.add(new Emp("Ram","Trainer",34000));
list.add(new Emp("Sachin","Programmer",24000));
list.add(new Emp("Priyanka","Manager",54000));
list.add(1,new Emp("Ravi","Administrator",44000));
list.add(new Emp("Ram","Trainer",34000));
list.add(new Emp("Anupam","Programmer",34000));
list.add(new Emp("Sachin","Programmer",24000));
list.add(new Emp("Sachin","Team Leader",54000));
System.out.println("There are "+list.size()+" elements in the list.");
System.out.println("Content of list are : ");
ListIterator itr=list.listIterator();
while(itr.hasNext())
{
Emp e=(Emp)itr.next();
e.display();
}
}
}
答案 0 :(得分:3)
要从数组列表中删除重复元素,您应该考虑使用哈希集b / c它们不允许重复。
// Declare your reference variables
ArrayList list = new ArrayList();
HashSet hashSet = new HashSet();
// Put all list elements into hashset
hashSet.addAll(list);
list.clear();
list.addAll(hashSet);
答案 1 :(得分:2)
您可以使用LinkedHashSet来保留元素顺序,如下所示:
List list = new ArrayList();
// list initialization
LinkedHashSet set = new LinkedHashSet();
set.addAll(list);
list.clear();
list.addAll(set);
答案 2 :(得分:1)
立即想到三种方式:
遍历每个元素的列表,检查所有其他元素并在碰撞时删除另一个元素。运行时间为O(n ^ 2)
对列表进行排序,遍历它,跟踪当前项目A;删除后续项目,直到有项目B!= A;继续直到列表的末尾。运行时是排序+迭代,所以O(n log n)和O(n ^ 2)之间的东西
将您的项目放入某种散列数据结构中,清空您的列表,并从散列结构中仅为每个将重新插入列表的散列值中的一个项目。如果正确完成,运行时应为O(n)
答案 3 :(得分:1)
1。当唯一性很重要时,请使用Set
。
2。我建议您使用课程HashSet
,,但如果连同唯一性,排序也很重要,请使用 {{1} } 实现 TreeSet
接口,进一步扩展SortedSet
接口。
3。此外,您可以使用 Collection
界面,以多种方式对TreeSet
进行排序。< /强>