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

Collection体系、遍历、泛型的更多相关文章

  1. 一点一点看JDK源码(一)Collection体系概览

    一点一点看JDK源码(一)Collection体系概览 liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 Collection为集 ...

  2. java遍历泛型的方法

    一.List遍历 Java中List遍历有三种方法来遍历泛型,主要为: 1.for循环遍历 2.iterator遍历 3.foreach遍历 package com.gmail.lsgjzhuwei; ...

  3. C# 遍历泛型集合

    /// <summary> /// 遍历泛型 /// </summary> /// <typeparam name="T"></typep ...

  4. Collection类,泛型

    Collection(接口) 所有超级接口: Iterable<E> 一.集合 1.集合的介绍&集合和数组的区别 什么是集合:java中的一种容器 什么是数组:java中的一种容器 ...

  5. 循环遍历泛型集合List绑定到table

    <%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false&quo ...

  6. Collection体系

  7. Java集合:Collection、List、Set、Map、泛型

    1.集合的理解和好处 2.集合的框架体系图 ★ 3.Collection接口的特点和使用 ★ 4.List和Set接口的特点和使用★ 5.List接口的实现类学习★ 6.Set接口的实现类学习★ 7. ...

  8. Java集合 Collection、Set、Map、泛型 简要笔记

    集合 什么是集合 概念 对象的容器,实现了对对象常用的操作 和数组的区别 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 位置 java.util.*; Colle ...

  9. 大数据之路week02 Collection 集合体系收尾(Set)

    1.Set集合(理解) (1)Set集合的特点 无序,唯一. (2)HashSet集合(掌握) A: 底层数据结构是哈希表(是一个元素为链表的数组) B: 哈希表底层依赖两个方法: hashCode( ...

随机推荐

  1. 二分-A - Cable master

    A - Cable master Inhabitants of the Wonderland have decided to hold a regional programming contest. ...

  2. 使用TensorFlow训练模型的基本流程

    本文已在公众号机器视觉与算法建模发布,转载请联系我. 使用TensorFlow的基本流程 本篇文章将介绍使用tensorflow的训练模型的基本流程,包括制作读取TFRecord,训练和保存模型,读取 ...

  3. Linux - Shell - 算数表达式 - 关系运算

    概述 shell 中基于 $(()) 的 关系运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 位运算 代码 #!/bin/bash # 关系运算符 # 结果是 真/ ...

  4. [一本通学习笔记] 字典树与 0-1 Trie

    字典树中根到每个结点对应原串集合的一个前缀,这个前缀由路径上所有转移边对应的字母构成.我们可以对每个结点维护一些需要的信息,这样即可以去做很多事情. #10049. 「一本通 2.3 例 1」Phon ...

  5. 删除空目录命令 - rmdir

    (1) 命令名称:rmdir (2) 英文原意:remove empty directories (3) 命令所在路径:/bin/rmdir (4) 执行权限:所有用户 (5) 功能描述:删除空目录( ...

  6. centost redhat 卸载rpm以及yum install 的正确姿势

    先看yum  install 的卸载: 第一列为我们要的包名: 那么要移除必须使用 yum list |grep  collectd | awk '{print $1}' |xargs  yum  r ...

  7. input输入框在ios手机上获取焦点后有一个灰色阴影

    遇到的场景: 有一个输入框 设置 outline:none 然后我又想给他设置获取焦点的颜色 然后 我给input 设置 border 为 1px t透明的 然后 获取焦点的时候 重新设置border ...

  8. 设置canvas的背景成白色

    解决方案一:将透明的pixel设成白色 因为png图片的背景都是透明的,所以我们可以寻找透明的pixel,然后将其全部设置成白色,核心代码如下: JavaScript Code复制内容到剪贴板 // ...

  9. jdk8-》日期时间及其格式处理类特性

    一.JDK8之时间⽇期处理类 核⼼类: LocalDate:不包含具体时间的⽇期. LocalTime:不含⽇期的时间. LocalDateTime:包含了⽇期及时间. LocalDate 常⽤API ...

  10. jmeter+ant+jenkins接口自动化测试框架

    大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起来可以搭建 ...