zoukankan      html  css  js  c++  java
  • 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(); 从大到小

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

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

  • 相关阅读:
    基本STRUTS标签-学习笔记-Logic标签
    Static的使用
    模板template
    iostream与iostream.h的区别
    数据库连接池
    canvas基础
    javascript面试题集
    ES6新特性学习
    原型和原型链
    css为tbody或者li奇数偶数行样式
  • 原文地址:https://www.cnblogs.com/xusong/p/5787167.html
Copyright © 2011-2022 走看看