本帖最后由 黄炳期 于 2013-9-21 17:31 编辑
这是主程序,功能是删除ArrayList中的重复元素。- package cn.itcast.p3.arraylist.test;
- import java.util.ArrayList;
- import java.util.Iterator;
- import cn.itcast.p.bean.Person;
- /*
- * 定义功能取出ArrayList中的重复元素。
- */
- public class ArrayListTest2 {
- public static void main(String[] args) {
-
- // demo();
-
- // singleDemo();//存储字符串时
-
- //存储自定义对象时
- /*
- * contains 底层也是用equals方法实现判断集合是否有相同元素的。
- */
- ArrayList al = new ArrayList();
- al.add(new Person("lisi1",21));
- al.add(new Person("lisi3",23));
- al.add(new Person("lisi2",22));
- al.add(new Person("lisi3",23));
- al.add(new Person("lisi4",24));
- al.add(new Person("lisi1",21));
- System.out.println(al);
-
- al = getSingleElement(al);
-
- System.out.println(al);
- }
-
- /**
- *
- */
- public static void singleDemo() {
- ArrayList al = new ArrayList();
- al.add("abc");
- al.add("abc1");
- al.add("abc2");
- al.add("abc2");
- al.add("abc1");
- System.out.println(al);
-
- al = getSingleElement(al);
-
- System.out.println(al);
- }
- public static ArrayList getSingleElement(ArrayList al) {
-
- //1.定义临时容器。
- ArrayList temp = new ArrayList();
-
- //2.迭代al集合
- Iterator it = al.iterator();
- while(it.hasNext()){
- Object obj = it.next();
- Person p = (Person)obj;
- //3.判断被迭代到的元素是否在临时容器中存在。
- if(!temp.contains(p))
- temp.add(p);
-
- }
- return temp;
- }
- }
复制代码 下面这一段是Person类。- package cn.itcast.p.bean;
- public class Person {
-
- private String name;
- private int age;
-
- public Person() {
- super();
-
- }
- public Person(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
-
-
- /*
- @Override
- public int hashCode() {
-
- return name.hashCode()+age;
- }*/
- @Override
- public boolean equals(Object obj) {
-
- if(this == obj)//健壮性判断
- return true;
- // if(obj instanceof Person)
- // throw new ClassCastException("类型错误");
- Person p = (Person)obj;
-
- return this.name.equals(p.name) && this.age==p.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;
- }
-
- }
复制代码 我的问题是,程序运行结果显示的是@哈希值,怎么改才能正常显示?
程序里也我做了强转了,还是不行。
这是运行结果:
|