zoukankan      html  css  js  c++  java
  • Collection体系、遍历、泛型

    Collection体系(集合类,它是一个接口):
        两个子类:
            List、Set(这两个子类也是接口)
                List有两个常用子类:(值,不唯一,允许有重复的元素,都是有序的)
                    ArrayList:
                        数组结构,查找快,增删慢。线程不安全。
                    LinkedList:
                        有序,链表结构,查找慢,增删快。线程不安全。
                    Vector:(以过时)
                        有序,数组结构,查找增删都慢。线程安全。
                Set:有三个常用子类(值,唯一,不允许有重复的元素)
                    HashSet:
                        底层是哈希表结构,无序。
                        如何保证唯一性的?
                            由HashCode和equals方法保证唯一性的。
                        顺序:
                            先判断HashCode方法
                                相同:判断equals方法,相同:不添加。不相同:添加
                                不相同:添加
                    LinkedHashSet:
                        有序,底层是链表加哈希表结构,由链表保证有序,哈希表保证唯一。
                    TreeSet:
                        底层是二叉树结构,有一定的自然排序算法。
                        是如何保证元素的唯一性的?
                            根据返回值是否是0判断是否重复。并且还要保证元素有序:
                                根据返回值是正数还是负数。
                                实现方案:添加比较器
                                    元素具备比较器:实现Comparable接口,重写CompareTo方法。
                                    集合具备比较器:实现Comparator接口,重写Compare方法。
     
                                    
     
    List和Set集合遍历的几种方式:
        Set集合是没有普通for的遍历方式
        普通for、增强for、迭代器
            普通for格式:
                for(int i = 0; i < list.size(); i++){}
            增强for格式:
                for(类型 变量名 : 集合名){}
            迭代器格式:(提供了两个方法:hasNext和next方法)
                Iterator<类型> it = 集合名.iterator();
        什么时候使用?
            需要操作集合的角标的时候使用普通for
            只需要遍历集合的时候使用增强for或迭代器。
            
            
    泛型:
        泛型的通配符为:?
        <? extends T> 向下限制,只可以传递T类型或T类型的子类
        <? super T> 向上限制,只可以传递T类型或T类型的父类
    泛型的定义:定义泛型可以在类中预支地使用未知的类型。可定义在类、方法或接口上。
    泛型的使用:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。
    泛型的好处:
        将运行时期的ClassCastException,转移到了编译时期变成了编译失败。
        避免了类型强转的麻烦。
    泛型的格式:
        类上:
        修饰符 class 类名<代表泛型的变量> {  }
            使用格式:
                使用格式:创建对象时,确定泛型的类型
        接口上:
        interface 类名<代表泛型的变量>{ }
            使用格式:
                1、定义类时确定泛型的类型
                2、始终不确定泛型的类型,直到创建对象时,确定泛型的类型
     
        方法上:
        修饰符<> 返回值类型 方法名(泛型变量  变量名){}
            使用格式:
                使用格式:调用方法时,确定泛型的类型
  • 相关阅读:
    GRUB引导Win8,Win7,Ubuntu
    The vim syntax of systemd unit file
    Win8蓝屏(WHEA_UNCORRECTABLE_ERROR)
    C#生成Excel
    IE中使用IFrame或Frameset导致session丢失的问题
    Apache 配置详解 ( 最好的 APACHE 配置教程 )
    关于(enctype="multipart/formdata") post 提交时中文乱码解决方案(使用jspsmartupload时)
    Java获取当前时间
    windows中定时操作(SetTimer函数用法)
    _RecordsetPtr的 open函数
  • 原文地址:https://www.cnblogs.com/rrong/p/12093293.html
Copyright © 2011-2022 走看看