A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微笑=.一瞬间 山林野马   /  2014-4-20 14:56  /  1020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序:
import java.util.*;

class MyTestArratList
{
        public static void main(String[] args)
        {
                ArrayList al=new ArrayList();
                al.add("java1");
                al.add("java2");
                al.add("java3");
                al.add("java4");
                al.add("java1");

                Iterator it=al.iterator();
                ArrayList newAl=new ArrayList();
                while(it.hasNext())
                {
                        Object obj=it.next();
                        if(!newAl.contains(obj))
                        {
                                newAl.add(obj);
        
                                System.out.println(obj);
                        }
                                
                }
        }
}
请问if语句contains方法调用的String类中的equals方法还是Object类中的equals方法呢?

评分

参与人数 1技术分 +1 收起 理由
Silent_memory + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
是object的
回复 使用道具 举报
Object的方法,因为你有:Object obj=it.next();这就表明的obj是Object类型的,如果想调用String中的方法的话,你就需要吧那句改成:String obj=(String)it.next();
最后建议你学过泛型的话最好用泛型来写吧
回复 使用道具 举报
肯定是Object中的方法呀,,必须还要重写equals方法,这是我个人总结的List集合的一些技巧
主要总结了List集合宗去掉重复元素与排序(包括自然排序与自定义比较器排序),希望对你有帮助呀
  1. package com.cg.test;
  2. /*
  3. * List集合去除重复元素的方法,并且进行对指定比较器进行排序
  4. * */
  5. import java.util.ArrayList;
  6. import java.util.Collections;
  7. import java.util.Comparator;
  8. import java.util.Iterator;
  9. import java.util.LinkedList;
  10. import java.util.List;

  11. class Student implements Comparable<Student>{
  12.         public String name;
  13.         public int age;
  14.         Student(String name,int age) {
  15.                 this.name=name;
  16.                 this.age=age;
  17.         }
  18.         public boolean equals(Object o1){
  19.                 if(!(o1 instanceof Student))
  20.                         return false;
  21.                 Student s=(Student)o1;
  22.                 return this.name.equals(s.name)&&this.age==s.age;
  23.         }
  24.         public int compareTo(Student o) {
  25.                 int num=this.age-o.age;
  26.                 return num==0?this.name.compareTo(o.name):num;
  27.         }
  28.        
  29. }
  30. class MyComparator implements Comparator<Student>{
  31.         public int compare(Student o1, Student o2) {
  32.                 int num=o1.name.compareTo(o2.name);
  33.                 return num==0 ? o1.age-o2.age:num;
  34.         }
  35. }
  36. public class CollectionsDemo {
  37.         public static void main(String[] args) {
  38.                 showArrayList();
  39.         }
  40.         public static void showArrayList(){
  41.                 LinkedList<Student> alList=new LinkedList<Student>();
  42.                 //List<Student> alList=new ArrayList<Student>();
  43.                 alList.add(new Student("zhangsan",20));
  44.                
  45.                 alList.add(new Student("lisi002",22));
  46.                 alList.add(new Student("lisi004",23));
  47.                 alList.add(new Student("lisi001",21));
  48.                 alList.add(new Student("lisi004",23));
  49.                 alList.add(new Student("lisi001",21));
  50.                 alList=singleArray(alList);
  51.                 Collections.sort(alList,new MyComparator());
  52.                 Iterator<Student> it=alList.iterator();
  53.                 while(it.hasNext()){
  54.                         Student s=it.next();
  55.                         System.out.println(s.name+"::"+s.age);
  56.                 }
  57.         }
  58.         public static LinkedList<Student> singleArray(LinkedList<Student> alList){
  59.                 LinkedList<Student> newal=new LinkedList<Student>();
  60.                 Iterator<Student> it=alList.iterator();
  61.                 while(it.hasNext()){
  62.                         Student s=it.next();
  63.                         while(!newal.contains(s)){
  64.                                 newal.add(s);
  65.                         }               
  66.                 }
  67.                 return newal;
  68.         }
  69. }
复制代码

去重复与排序问题List集合通用哦
回复 使用道具 举报
Object的方法。
查阅了ArrayList对应的API后,contains方法给出的注释是:
    “public boolean contains(Object o)
       如果此列表中包含指定的元素,则返回 true。更确切地讲,当且仅当此列表包含至少一个满足 (o==null ? e==null : o.equals(e)) 的元素 e 时,则返回 true。 ”
因为传入的参数o是Object类,o.equals(e)为Object的eequals.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马