黑马程序员技术交流社区

标题: 集合的问题 [打印本页]

作者: 黑马的黑马    时间: 2016-6-24 21:10
标题: 集合的问题
为什么主方法中的getSingle下会划红线报错,到底错在哪了,求大神解答
public class Test7 {

        /**
         * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)
         * 思路:创建新集合方式
         */
        public static void main(String[] args) {
                ArrayList<String> list = new ArrayList<>();
                list.add("a");
                list.add("a");
                list.add("a");
                list.add("b");
                list.add("b");
                list.add("c");
                list.add("c");
                list.add("c");
                list.add("c");
                list.add("c");
               
                ArrayList<String> newList = getSingle(list);
                System.out.println(newList);
        }
        //contains方法判断是否包含,底层依赖的是equals方法,如果是自定义对象,要重写equals方法
        public static ArrayList<Object> getSingle(ArrayList<Object> list) {
                ArrayList<Object> al = new ArrayList<>();
                Iterator<Object> it = list.iterator();
                while (it.hasNext()) {
                        Object object = (Object) it.next();
                        if (!al.contains(object)) {
                                al.add(object);
                        }
                }
                return al;
        }
作者: lifeiwangyue    时间: 2016-6-24 21:17
类型不一致啊  你传递的繁星里面是String  方法里面的是Object  在编译的时候不一致 不能擦除
作者: 黑马的黑马    时间: 2016-6-24 21:23
lifeiwangyue 发表于 2016-6-24 21:17
类型不一致啊  你传递的繁星里面是String  方法里面的是Object  在编译的时候不一致 不能擦除 ...

Object不是String的父类吗?这样也不行?
作者: 火影木叶    时间: 2016-6-24 22:45
总结的很好 ,很强大
作者: 黑马的黑马    时间: 2016-6-25 21:40
lifeiwangyue 发表于 2016-6-24 21:17
类型不一致啊  你传递的繁星里面是String  方法里面的是Object  在编译的时候不一致 不能擦除 ...

哦,这个我搞明白了,还是谢谢你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2