zoukankan      html  css  js  c++  java
  • 基础知识巩固四

    使用泛型的主要优点是能够在编译时检测出错误

    非受限泛型类型<E>和<E extends Object>是一样的

    <E extends 父类>为受限泛型,必须为父类的子类型

    将一个类定义成泛型:类名<泛型类型>

    将一个方法定义成泛型,<E> void 方法名(E e),调用方式:类名.<泛型类型>方法名().

    通配泛型:

    1. 无界通配符:<?>
    2. 上界通配符:<? extends E>
    3. 下界通配符:<? super E>

    注意:Integer是Object的子类,但T<Integer>不是T<Object>的子类,T<Object>要转换成T<?>才可以

    泛型类型的限制:

    1. 不能使用new E()
    2. 不能使用new E[],但可以通过1、E[] element = (E[])new Object[10]规避  2、ArrayList<E>[] list = (ArrayList<E>[])new ArrayList[10]规避
    3. 在静态环境下不允许类的参数是泛型类型
    4. 异常类不能是泛型

    java集合框架支持以下两种类型的容器:

    1. 为了存储一个元素集合,简称为集合(Collection)
    2. 存储键/值对,成为图(map)

    集合:1、规则集(set)2、线性表(List)3、队列(Queue)

    集合框架中所有具体类都实现了Cloneable与Serializable接口

    Collection.retainAll(c:Collection<?>)返回boolean值:保留既出现在这个集合中,也出现在指定集合中的元素

    Set:不允许出现重复的元素

    1. 散列类HashSet:元素没有特定顺序
    2. 链式散列集LinkedHashSet:元素按照插入顺序排列
    3. 树形集TreeSet:元素按照字母顺序排列

    数组线性表类:ArrayList,链表类LinkedList

    ArrayList.trimToSize()可以将数组容量减小到线性表的大小

    ListIterator接口扩展了Iterator接口,增加对线性表双向遍历的能力

    e.g:ListIterator<Object> list = linkedList.listIterator()

    list.hasNext():从前遍历

    list.hasPrevious():从后遍历

    Collections类中提供了用于对线性表进行排序的静态方法

    Collections.sort(list)

    Collections.reverse(list)

    reverseOrder():以逆序对元素排序

    copy方法执行的是潜伏之,复制的只是线性表中元素的引用

    nCopies(int n,object o):创建一个包含指定对象的n个副本的不可变线性表

    fill(List list,Object o):用指定元素替换线性表中所有元素

    disjoint(collection1,collection2):如果这两个集合没有相同的元素,返回true,否则false

    shuffle()打乱线性表中元素

    注意:规则集在性能上要由于线性表

    向量类Vector是栈类Stack的父类

    Stack的方法有(相对重要的):

    1. peek():返回栈顶元素
    2. pop():返回并删除栈顶元素
    3. push():在栈顶增加一个新元素

    Queue:

    1. offer():向队列中插入一个元素
    2. poll():获取并删除队列头,如果队列为空,返回Null
    3. remove():与poll相似,但队列为空会抛出异常
    4. peek():获取但不删除队列头,如果为空返回null
    5. element():获取但不删除队列头,如果为空抛出异常

    双端队列Deque:

    • addFirst(e)    ,removeFirst();
    • addLast(e)    ,removeLast();

    双端队列的父类是Queue,是LinkedList的父类即:Queue<----Deque<----LinkedList

    图(map):1、HashMap   2、LinkedHashMap   3、TreeMap

    keySet():获取一个包含图中键值的规则集

    values():获得一个包含图中值的集合

    entrySet():返回一个实现MapEntry<K,V>接口的对象集合

    除了HashTable具有同步功能之外,它与HashMap的用法是一样的

    LinkedHashMap既可按插入顺序排序,也可按最早到最晚的访问顺序排序

    一个提示点:

    在JDK中  Integer.intValue解释的用法是:以int类型返回该Integer的值

    也可以用于int和Integer的相互转换

    int---->Integer

    Integer A = new Integer(3);

    Integer  A = Integer.intValue(3);

     

    Integer---->int

    Integer  A = new Integer(3);

    int a = A.intValue();

  • 相关阅读:
    ASP.NET常见命名空间及其功能描述
    C#中的里氏替换原则
    Java中的split函数的用法
    shader之旅-7-平面阴影(planar shadow)
    OpenGL三角形的双面不同颜色的绘制
    MATLAB squeeze 函数
    matlab 常用函数汇总
    第一个OpenGL程序
    Github 留言系统
    Paging 简单自由的分页生成器
  • 原文地址:https://www.cnblogs.com/shigeng/p/8544357.html
Copyright © 2011-2022 走看看