黑马程序员技术交流社区

标题: LIST重点回顾。。。。 [打印本页]

作者: beleveyourself    时间: 2016-10-17 11:42
标题: LIST重点回顾。。。。
觉得总结的挺好的,特来分享给大家,喜欢记得留言。

作者: beleveyourself    时间: 2016-10-17 12:38
1、List的API文档说明
A、List有两个,使用 java.util.List
       集合所有相关API都在 java.util 包
B、父接口 --- Collection
        实现类 --- ArrayList LinkedList Vector(面试)
C、有序的 ----- 存入和取出一致
       有索引
       存储重复元素(重复依据:equals判断为true视为重复)
       可以存储 null 值,且null值有多个
D、方法
    特点:继承了Collection的方法
       拓展了一些方法:和索引相关
  总结:
  增
  add(int index, E e) ---- 在指定索引处插入元素 e
  删
  remove(int index) ------ 删除指定索引元素
  改
  set(int index, E e) ---- 将指定索引处的元素修改为 e
  查
  get(int index) --------- 获取指定索引元素
  
特有遍历
  for(int i = 0; i < 集合.size(); i++){
          数据类型 e = 集合.get(i);
  }  
  
2、并发修改异常
A、如果遍历过程当中,同时有修改集合元素的操作,可能会抛出此异常
B、根据实际API,有的集合实现类会检测并抛出异常
        但是,有的集合可能不会抛出异常
        有或然性
C、建议,无论使用什么集合,保险起见,当做都会抛出并发访问异常即可

3、数据结构
堆栈 ----- 先进后出
队列 ----- 先进先出
链表结构 -- 看图

4、LinkedList
LinkedList底层使用的双向链表,双向链表特点:
  可以从前向后查询,也可以从后向前查询
  因此LinkedList提供了一个特有的方法,这些特有的方法是关于首尾操作的

5、使用LinkedList实现堆栈与队列结构
实现方案有多种:
   以队列为例:
        方案1:可以使用之前遍历集合的方式 ---- 只是获取,不移除
        方案2:声明变量接收长度
                  for 循环 {
                          调用 removeFirst 方法
                          移除并且获取第一个元素
                  }
        方案3:
                while(!集合.isEmpty()){
                        调用 removeFirst 方法
                }
  实现堆栈与实现队列思路一样
  
6、JDK 1.0 时,只有一个集合API
   Vector,Vector实现和ArrayList基本一样
      后期出于编码风格和效率(后面多线程再将)考虑,使用ArrayList替换了Vector
      以后使用ArrayList 不用 Vector,但是Vector会在一些老的代码,面试题中遇到
   
  

作者: gyy    时间: 2016-10-17 12:41
恩恩,要是整理一下就更好了,这样子看起来有点乱额
作者: beleveyourself    时间: 2016-10-17 12:42
gyy 发表于 2016-10-17 12:41
恩恩,要是整理一下就更好了,这样子看起来有点乱额

主要我是复制过来的,手机发的,没发调整

作者: 峰少    时间: 2016-10-17 12:43
牛叉!

作者: 蓝光四号    时间: 2016-10-17 12:46
不错呀

作者: beleveyourself    时间: 2016-10-17 12:53
蓝光四号 发表于 2016-10-17 12:46
不错呀

那当然,

作者: 黑马-小旭哥    时间: 2016-10-17 13:39
今天正好要讲list。谢谢楼主啦






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2