Java基础---数组总结

图片比较大,可能看不太清楚,可以单击右键选择查看图片,看大图

这里截取截取几个比较重要的展示吧,具体的大家看图了

arraylist---类:数组实现,查找快,线程不安全,效率高,最常用的集合之一

去重:
//注意,自定义对象必须重写 equals 方法才能实现去重
        //因为 contions ();底层是依靠 equals 实现的
        ArrayList<Student> a = new ArrayList<Student>();
        a.add(new Student("张三",23));
        a.add(new Student("张三",23));
        a.add(new Student("李四",24));
        //获取迭代器对象
        Iterator<Student> i = a.iterator();
        //创建新集合
        ArrayList<Student> a1 = new ArrayList<Student>();
        while (i.hasNext()) {
            Student s = i.next();//.next();有个指针不能连续调用
            if (!a1.contains(s)) {
                a1.add(s);
            }
        }

TreeSet---类:在保证数据唯一性的情况下对数据进行排序,排序的功能由二叉树算法实现

两种实现方法:

方法一:自定义对象实现compareable接口,并且重写其中的compareTo方法

public class Student implements Comparable<Student>

@Override
    public int compareTo(Student o) {
        int num = this.age - o.age;
        return num == 0 ? this.name.compareTo(o.name) : num;
    }
自定义对象实现了该接口之后,直接传入,TreeSet 集合就可以实现排序和去重
当我们要保留重复元素的时候可以这样
return num == 0 ? 1 : num;
注意:
this.age - o.age; 是从小到大
o.age - this.age 是从到小
这跟二叉树的算法有关,存法:返回值为负数存左边,为正存右边,为0不存
                                取法:默认先取左边

方法二:在创建TreeSet对象的时候通过构造方法传入比较器(实现了comparator的对象实例,一般通过匿名内部类实现)

        TreeSet<Student> t = new TreeSet<Student>(new Comparator<Student>() {

            @Override
            public int compare(Student o1, Student o2) {
                int num = o1.getAge() - o2.getAge();
                return num == 0 ? o1.getName().compareTo(o2.getName()) : num;
            }
        });
我们一般是通过构造方法传入 comparator 的匿名子类对象
o1.getAge() - o2.getAge(); 从小到大
o2.getAge() - o1.GetAge(); 从大到小

--------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,我就写这么多了,具体的大家看图了啊

posted @ 2016-08-19 12:14  徐松  阅读(183)  评论(0编辑  收藏  举报