zoukankan      html  css  js  c++  java
  • 第三周学习视频(二)

    一、枚举

    特征:
    1、不能有public的构造函数。(防止外部修改常值)
    2、所有的枚举值都是public,static,final的。
    3、enum默认实现了java.lang.Comparable 接口。
    4、enum重载了toString方法。
    5、enum提供了valueOf(),values()……等方法。


    格式 :
    [ 枚举类型修饰词列表 ] enum 枚举类型标识符 { 枚举常量 1 , 枚举常量 2 , ... ..., 枚举常量 n }
    eg. public enum Test{
    Monday("Mon.");
    Tuesday("Tue.");
    。。。
    Test(String name){。。。} }

    二、集合

    集合框架:所谓框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统 一的架构,包含了实现集合的接口与类,以及集合算法。


    集合框架几个基本接口下的层次结构关系:
    1、Collection:集合层次中的根接口,JDK 没有提供这个接口直接的实现类。
    2、Set:继承自 Collection,但不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。
    3、List:继承自 Collection,是一个有序的集合,允许重复,并引入位置下标。提供了按索引访问的方式。
    4、Queue:扩展自Collection接口,提供队列各种操作。
    5、Map:包含了key-value对。Map不能包含重复的key,但value可以重复。 SortedMap是一个按照升序排列key的Map。

    三、数组

    java.util里面有一个Arrays类,它包括了一组可用于数组的static方法,其中有四个基本方法:
    用来比较两个数组是否相等的equals()
    用来填充的fill()
    用来对数组进行排序的sort()
    以及用于在一个已排序的数组中查找元素的binarySearch()

    四、集合-Collection接口

    Java SDK不提供直接实现自Collection 的类,Java SDK提供的类都是实现自 Collection的“子接口”如List、Set、 Queue。
    不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代器,使用该迭代器即可逐一访问Collection中每一个元素。
    eg. Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 }

    五、集合-List接口

    列表,是一个排序的Collection,它可以包含重复的值。
    具有位置下标,可按索引访问其元素,索引从0开始。

    六、ArrayList

    ArrayList实现了可变大小的数组。它允许所有元素,包括null。
    ArrayList没有同步化。 (涉及多线程)
    eg. List <String> list=new ArrayList<String>();
    创建了泛型类ArrayList,并将其引用分别赋予变量list。(赋值给父接口的类型)

    七、LinkedList

    LinkedList实现了List接口,允许null元素。
    程序员就可以轻松的 把 LinkedList 当作一个堆栈(stack), 队列(queue)或双向队列(deque) 或其它面向端点的数据结构。
    eg. List <String> list=new ArrayList<>();


    注意:LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));


    另: Arrays类提供静态方法asList(),将数组看成List集合,并返回其视图。
    该数组的list视图使程序员能够将数组像列表那样操作。
    List<String> list = Arrays.asList(arr);

    八、ArrayList和LinkedList的比较

    如果经常在List的开始处增加元素,或者 经常在List中间位置进行插入和删除操作, 且只要顺序的访问列表元素,应该使用 LinkedList(链表),
    如果希望随机访问有序集合中的任何一个元素,或者总是把元素追加在末尾, 优先考虑使用使用ArrayList(数组)。

    九、集合-Vector

    和ArrayList一样,Vector类也提供与数组相似的数据结构功能,但它能动态的调整大小,可以存储不同类型的数据元素。
    Java 2 SDK,版本 2以后Vector类被改良到“集合框架”层次结构中以实现 List 接口。


    与ArrayList不同的是,Vector是同步的。
    当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出 ConcurrentModificationException,必须捕获该异常。

    十、集合-Stack

    由于Stack类扩展Vector类,所有 Vector类的全部公有接口都可以用于 Stack。
    要当心一些超常规方法,例如:Vector的add方法,可以在栈的任何地方插入元素,会扰乱栈的操作。

  • 相关阅读:
    内存使用过高点检checklist
    Ubuntu linux系统下 su:出现: authentication failure的解决办法
    static完全解析
    C语言开发规范
    单片机、ARM、PC程序执行介质区别
    2021来了,一份小菜鸡的2020总结!
    Linux命令进阶篇-文件查看与查找
    LINUX常用命令(二)
    Linux常用命令(一)
    百钱百鸡
  • 原文地址:https://www.cnblogs.com/caihan/p/12408364.html
Copyright © 2011-2022 走看看