黑马程序员技术交流社区
标题:
arraylist去除重复元素,我这错哪了?
[打印本页]
作者:
柏涛
时间:
2014-1-19 20:20
标题:
arraylist去除重复元素,我这错哪了?
import java.util.ArrayList;
import java.util.Iterator;
public class Demo12 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list = new ArrayList();
list.add(new Person("lisi",33));
list.add(new Person("wangwu",31));
list.add(new Person("lisi",33));
Iterator it = list.iterator();
while(it.hasNext()){
Object obj =it.next();
Person p = (Person)obj;
System.out.println(p.getAge()+"::"+p.getName());
}
}
}
class Person{
private String name;
private int age;
Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(){
this.age=age;
}
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;
}
}
作者:
776699
时间:
2014-1-19 20:41
arraylist 存储数据方式是数组结构存储,带有角标可以索引,可以存 重复元素;Set集合的子类不可以存储重复元素。
作者:
糖伯貓
时间:
2014-1-19 20:55
需要再添加一个新的ArrayList,判断下新的list里面有没有原来list里面的元素,有就不要,没有就添加进去。
public static ArrayList singleElement(ArrayList list)
{
ArrayList newAl = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext())
{
Object obj = it.next();
if (!newAl.contains(obj)) {
newAl.add(obj);
}
}
return newAl;
}
复制代码
作者:
宋星
时间:
2014-1-19 21:08
用ArrayList加一个去除重复元素的方法后,是可以去除重复元素的,但你这个代码中缺少去除重复元素的方法。在class Demo12类中添加一个singleElement()的方法,如下
public static singleElement(Arraylist al)
{
ArrayList newAl=new ArrayList();
Iterator it=al.iterator();
while(it.hasNext())
{
Object obj=it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
作者:
月生春
时间:
2014-1-19 21:16
import java.util.ArrayList;
import java.util.Iterator;
public class Demo12 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list = new ArrayList();
list.add(new Person("lisi",33));
list.add(new Person("wangwu",31));
list.add(new Person("lisi",33));
Iterator it = list.iterator();
while(it.hasNext()){
Object obj =it.next();
Person p = (Person)obj;
System.out.println(p.getAge()+"::"+p.getName());
}
}
}
class Person{
private String name;
private int age;
Person(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(){
//这个方法错了,可以不要this.age=age;
}
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;
}
}
作者:
唐志海
时间:
2014-1-20 01:04
ArraryList的结构是数组,所以它是可以有重复元素的。你的主函数里面并一个调用学生类中equals方法。所以要去除集合中的重复元素的话可以定义一个新的集合判断学生是否是重复的。代码如下:
class Person
{
private String name;
private int age;
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;
return this.name==p.name&&this.age==p.age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
Person(String name,int age)
{
this.name=name;
this.age=age;
}
}
public class ArraryListTest2
{
public static void main(String[] args)
{
ArrayList<Person> al=new ArrayList<Person>();
al.add(new Person("zhangsan",21));
al.add(new Person("zhangsan",22));//Object obj=new Person();
al.add(new Person("zhangsan",23));
al.add(new Person("zhangsan",21));
al.add(new Person("zhangsan",22));
al=method(al);
//sop(al.remove(new Person("zhangsan",23)));//remove也是调用了person中的equals方法
Iterator it=al.iterator();
while(it.hasNext())
{
Person p=(Person)it.next();
sop(p.getName()+"....."+p.getAge());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static ArrayList method(ArrayList al)
{
ArrayList<Object> newal=new ArrayList();
Iterator<Object> it=al.iterator();
while(it.hasNext())
{
Object obj=it.next();
if(!newal.contains(obj))//调用的是equals方法。
newal.add(obj);
}
return newal;
}
}
复制代码
作者:
柏涛
时间:
2014-1-20 09:06
楼上正解 谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2