黑马程序员___集合1

来源:互联网 发布:淘宝交易成功数据 编辑:程序博客网 时间:2024/06/07 16:53

------- android培训、java培训、期待与您交流! ---------

-集合Collecton

一.为什么要使用集合
如果有以下的要求:
有一个班级的学生,考试成绩,姓名,和学号
    张三  100 90
    李四  005 87
  采用数组存储
  对象数组  存储的是引用数据类型
  class Student{
      String name;
      String id;
      int score;
      Student(name,id,score){
        this.......
      }
  }
  数组定义  Student[] stu = {new Student("张三","004",88)};
  数组的长度怎么办,
因此在JDK1.2 出现了集合框架;

集合与数组的明显区别:
数组是定长的,集合是变长的;
数组可以存储对象,也可以存储基本数据类型;
集合只能存储对象;

集合最顶层的接口Collection
Collection很重要的两个子接口List和Set等等;
List很重要的实现类:ArrayList  LinkList   Vactor等等,

二.集合的迭代器;
迭代器就是取出集合中存储对象的一种方式,与遍历数组很像;集合中所有的类都有此方法;
使用迭代器取出集合中存储对象的步骤:
第一步,使用集合中的方法iterator()获取Iterator接口对象(内部类对象),获取迭代器
    第二步,使用迭代器对象的hasNext()方法判断集合中,有没有对象可以被取出
    第三步,使用迭代器对象的next()方法,获取集合中对象
需要注意的是
  1 使用迭代器的过程中,出现了一个异常
    java.util.ConcurrentModificationException--并发修改异常
    在迭代器迭代集合的过程中,不能使用集合的方法,改变集合的长度 add remove clrea


  2当迭代器已经移动到了最后一位,再次使用next方法获取,出现
    Exception in thread "main" java.util.NoSuchElementException--没有元素被取出异常


  3 对于List派系有特有的ListIterator接口
    对于这个特有的迭代器,可以正向遍历集合,也可以逆向遍历几个,并且在整个遍历过程中,
    可以对几个进行修改,包括增加,删除.
    正向遍历的    逆向遍历
    hasNext()   hasPrevious()
    next()         previous()
三.List派系特点,ArrayList集合特点
 List接口: 允许重复,有下标,有序的,存储和取出顺序一致
 ArrayList:底层是什么可变数组,大小10个位置

            增长50%,线程不安全,查询块,增删慢

 LinkedList底层数据结构,链表数据结构
            查询慢,增删快
           线程不安全,执行效率高

案例:去掉一个集合中的重复对象
import java.util.*;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add(new Person("zhangsan",19));
array.add(new Person("zhangsan",19));
array.add(new Person("lisi",17));
array.add(new Person("lisi",17));
array.add(new Person("lilei",21));
method(array);
}
//定义方法,实现List集合的去掉重复,并返回去掉重复后的集合
public static ArrayList method(ArrayList array){
//定义新的集合
ArrayList newList = new ArrayList();
//迭代老集合
Iterator it = array.iterator();

while(it.hasNext()){
//取出老集合中的元素
Object obj = it.next();
//取出的元素,去新集合中判断是否存在
if(!newList.contains(obj))
//不包含的元素,存储到新集合
newList.add(obj);
}
return newList;
}
}
四 泛型简介
  泛型是什么,JDK1.5版本后出现的安全机制
  A. 将运行时期的问题,提前到了编译时期
     编译时期,是程序人员看到了,运行的时期是用户看到了
  B. 泛型的出现,避免了类型的强制转换,代码量减少
  C. 泛型定义格式
     集合类<数据类型>  变量 =  new 集合类<数据类型>();
     前后的数据类型,保持一致
     在JDK1.7版本后,后面的泛型<>省略不写,菱形◇语法
  D. 看到一个类的右边,写了<T> 必须指定泛型
------- android培训、java培训、期待与您交流! ----------
0 0
原创粉丝点击