黑马程序员技术交流社区

标题: 集合总结 [打印本页]

作者: shuguang    时间: 2015-8-14 21:59
标题: 集合总结
1、集合体系
红色为今天所学

Collection                          (接口)
     |——List                       (接口) 元素有序,可以重复
          |——ArrayList          (类)
          |——Vector             (类)
          |——LinkedList        (类)
     |——Set                       (接口) 元素无序,唯一
          |——HashSet           (类)
          |——TreeSet            (类)

2、数据结构(理解)
1、栈
     特点:先进后出
2、队列
     特点:先进先出
3、数组
     特点:查询快,增删慢
4、链表
     特点:查询慢,增删快

数据结构面试题:模仿Stack

3、List接口的三个子类的特点(掌握)
1、ArrayList
      底层数据结构是数组,查询快,增删慢
      线程不安全,效率高。
2、Vector
      底层数据结构是数组,查询快,增删慢
      线程安全,效率低。
3、LinkedList
      底层数据结构是链表,查询慢,增删快
      线程不安全,效率高。

4、什么时候使用?
       查询多用ArrayList,增删多用LinkedList

4、Vector类(了解)
     底层数据结构是数组,查询快,增删慢
     线程安全,效率低。

     了解就好,已经不用了,现在学是因为有些旧的项目里面用的还是Vector,也是为了让大家更好的了解JAVA的进化史
Vector 成员方法
public void addElement(Object obj)
添加
public Object elementAt(int index)
获取
public Enumeration elements()
获取
public int size()
长度
  

5、LinkedList类(掌握)
  1、特点
底层数据结构是链表,查询慢,增删快
线程不安全,效率高。

LinkedList 成员方法
void addFirst(Object o)
添加
void addLast(Object o)
Objcet getFirst()
获取
Object getLast()
Object removeFirst()
删除
Object removeLast()
  
6、ArrayList类(掌握)
1、特点     
     底层数据结构是数组,查询慢,增删快
     线程不安全,效率高。
     为了简化Vector中的方法名而存在的
2、成员方法
     参见List接口(day15)

     

7、泛型(掌握)
1、概述
     泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型
     泛型就相当于一个预定义类型
2、好处
     A、解决了黄色警告线问题
     B、把系统运行期间的异常提前到了编译期间
     C、优化了程序设计,不需要做强制转换了

3、不足
     泛型传入的只能是引用类型

3、泛型的定义
     A、在类上定义
          //在类上定义一个泛型
          public class MyArrayList<T> {

          }
           //在类上定义两个泛型
          public class MyArrayList<T, S> {

          }         

          //在类上定义两个泛型,且第二个类型必须是第一个类型的子类
          public class MyArrayList<T, S extends T> {

          }

          说明:
               T,S是名字,可以随意起,该处定义的泛型可以在本类的任意地方使用
               父类上定义的泛型不能被子类继承

      B、在方法上定义
          //在方法上定义一个泛型
          public <M> void show(M m){
          }
          //在方法上定义两个泛型
          public <M, S> void show(M m, S s){
          }
           //在方法上定义两个泛型,且第二个泛型必须事第一个泛型的子类
          public <M, S extends M> void show(M m, S s){
          }

          说明:
               T,S是名字,可以随意起,该处定义的泛型可以在该方法的任意地方使用

     C、在接口上定义泛型
         和在类上定义一样

3、泛型的使用
     可以在继承关系,实现关系,创建对象时使用
     在使用过程中,父类或父接口如果没有明确给定类型,那么子类必须定义泛型而且需要和父类或父接口的泛型名字一样(掌握)
   



8、增强for循环(掌握)
1、格式
     for(数组 或 Collection子类 的元素类型 变量名 :数组 或 Collection子类)
     {
          //使用变量
     }

2、好处
     方便数组和集合的遍历

3、注意事项
     增强for是用来代替Iterator的
     不要再遍历的时候用集合对集合本身进行修改

4、集合遍历的四种方式
     1、迭代
     2、将集合转换为数组(忘记吧)
     3、获取集合的长度,通过get()+for遍历
     4、使用for高级循环(常用)
               for(Object obj : list){
                    System.out.println(obj);
               }

作者: 一叶泛舟    时间: 2015-8-14 23:59
这么多,还得需要多背背
作者: 风华正茂    时间: 2015-8-15 17:57
楼主总结得不错,赞一个




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