【去除集合中重复的元素】
代码如下:
public class Demo{
public static void main(String[] args){
ArrayList arr = new ArrayList();
Person p1 = new Person("jack",20);
Person p2 = new Person("rose",18);
Person p3 = new Person("rose",18);
arr.add(p1);
arr.add(p2);
arr.add(p3);
System.out.println(arr);
ArrayList arr2 = new ArrayList();
for(int i=0;i<arr.size();i++){
Object obj = arr.get(i);
Person p = (Person)obj;
if(!arr2.contains(p)){
arr2.add(p);
}
}
System.out.println(arr2);
}
}
class Person{
private String name;
private int age;
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public int hashcode(){
return this.name.hashCode() + age*37;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Person p = (Person)obj;
return this.name.equals(p.name) && this.age = p.age;
}
public String toString(){
return "name:" + this.name + "age:" + this.age;
}
}
11、Vector: 多线程安全、但是效率低 ---->> 描述的是一个线程安全的ArrayList。
特有的方法:
void addElement(E obj) 在集合末尾添加元素
E elementAt(int index) 返回指定角标的元素
Enumeration element() 返回集合中的所有元素,封装到Enumeration对象中
Enumeration接口:
boolean hasMoreElements() 测试此枚举是否包含更多的元素
E nextElement() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素
【代码如下:】
public static void main(String[] args){
Vector v = new Vector();
v.addElement("aaa");
v.addElement("bbb");
v.addElement("ccc");
// System.out.println(v.elementAt(2));
Enumeration ens = v.elements();
while(ens.hasMorreElements()){
System.out.println(ens.nextElement());
}
}