Collection体系、遍历、泛型

2019-12-24 16:00:48来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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、始终不确定泛型的类型,直到创建对象时,确定泛型的类型       方法上:     修饰符<> 返回值类型 方法名(泛型变量  变量名){}         使用格式:             使用格式:调用方法时,确定泛型的类型

原文链接:https://www.cnblogs.com/rrong/p/12093293.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 深究递归和迭代的区别、优缺点及实例对比

下一篇:Spring Boot启动命令参数详解及源码分析