集合框架(一)

一,集合

  定义:位于Java.util包下的一些常用接口和类。是Java里提供的一种容器,用于存储多个数据。

  ★,数组与集合区别:

    1,数组长度是固定的。集合的长度是可变的

    2,数组中存储数据类型是同一类,常用来存储基本数据类型。集合存储的都是对象,对象类型可以不一致。

二,集合框架

  Java SE 提供了各种API(方法,接口,规范等),使用API前,必须了解继承和接口架构,才能了解何时用哪个类。————最终目标:灵活运用。

  集合按照存储结构可分两大类:

    1,单列集合-------Java.util.Collection

    2,双列集合-------Java.util.Map

三,Collection

  定义:单列集合类的根接口,定义了所有的单列集合的共性方法。

  作用:用于存储一系列符合某种规则的元素。有两个子接口:List Set

  常用方法:

    add(); 添加元素

    clear(); 清空集合

    remove(); 移除指定某个元素

    contains(); 判断是否包含某元素

    isEmpty(); 判断集合是否为空

    size(); 集合大小,返回集合中元素个数

    to Array(); 把集合元素存数组中,集合转数组

四,List

  定义:List 接口,继承Collection,单列结合

  特点:1,有序 2,有索引 3,可重复

  常用方法:

    setint indexe element); 设置指定元素替换指定位置

    getint index); 获取下标元素

    add(); 添加

    remove(); 删除

  1ArrayList

    List的实现类。连续存储方式。可看做长度可变的数组。在内存中分配连续的空间来存储数据。

    特点:元素 查询快,增删慢。

    方法:同List

  2LinkedList

    List的实现类。键表式存储方式。可看做手拉手丢手绢游戏。

      FIrstnextnextLast

    特点:元素 增删快,查询慢。

    方法:

      addFirst(); 添加元素到首位

      addLast(); 添加元素到末位

      removeFirst(); 移除首位

      removeLast(); 移除末位

      getFirst(); 获取首位元素

      getLast(); 获取末位元素

五,Set

  定义:java.util包下,继承Collection,单列集合

  特点:1,无序 2,无索引 3,不可重复,唯一

  原理:Set 在添加对象时会先判断加入对象是否已存在,采用equals去比较两个对象。存在则不存储,不存在添加存储。

    ★String系统类 重写了 equals 方法,比较两个对象String值是否相等。

  1HashSet

    Set主要实现类。

    存储原理:底层是一个哈希表结构,查询速度非常快

    方法:同Collection

      ★,不能用普通for循环遍历,只能用增强for,和迭代器遍历获取数据。

  2LinkedHashSet

    Set的实现类

    特点:1,有序 2,有索引 3,唯一不重复

六,Iterator 迭代器

  定义:接口经常遍历结合中的元素,JDK针对这种需求专门提供的一个接口。Java.util.Iterator>属于集合的一部分。

  原理:有类似指针去依次指向元素,有元素就取出。

  使用:Collection 中有 iterator();方法用来让每个集合获取迭代器。

    //1,获取迭代器

    Iterator<Person> it=hs.iterator();

    //2,判断迭代器是否有下一个元素 it.has();

    //3,循环如果有,就取出 it.next();

    while (it.hasNext()){

         Person p = (Person) it.next();

         System.out.println(p);

    }

七,Collections工具类

  常用方法:

  addAll(); 添加一系列元素

  shuffle(); 打乱集合顺序

  sort(); 默认升序排列

  sort(参数); 按自定规则排序

  public static void main(String[] args) {

         //2 创建集合

        List<Person> list =new ArrayList<>();

        //3 添加对象

        Collections.addAll(list,new Person("杨幂",30),new Person("刘诗",26),new Person("刘亦菲",28));

         //4 遍历

        Iterator it=list.iterator();

         while (it.hasNext()){

              Person per=(Person) it.next();

               System.out.println(per);

        }

         //5 打乱顺序

       Collections.shuffle(list);

        System.out.println(list);

         //6 年龄大到小

       Collections.sort(list, new Comparator<Person>() {

            @Override

            public int compare(Person o1, Person o2) {return o2.getAge()-o1.getAge(); }

         });

        System.out.println(list);

   }

原文地址:https://www.cnblogs.com/kide1412/p/10883021.html