zoukankan      html  css  js  c++  java
  • 第十一课 集合类Collection和Map

    集合类

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的方式。

    数组和集合类都是容器,他们有什么不同?

    数组虽然也可以存储对象,但长度是固定的;集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。

    集合类的特点:

    集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

    注意:每一个容器的存储方式都有不同,这个存储方式称之为:数据结构

    一、Collection

    ArrayList list = new ArrayList();

    //添加元素

    list.add("day01");

    list.add("day02");

    list.add("day03");

    list.add("day04");

    //删除元素day01

    list.remove("day01");

    //清空集合

    list.clear();

    //判断元素

    list.contains("day02");//判断list集合里面是否存在day02;

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

    //获取集合的长度,个数

    list.size();

    ArrayList list1 = new ArrayList();

    list1.add("day02");

    list1.add("day03");

    list1.add("day04");

    list1.add("day05");

    list.retainAll(list1);//取两个集合的交集,list里面只保留交集。

    //迭代器:

    Iterator it = list1.iterator();

    syso(it.next());// 返回一个元素,从第一个元素开始返回

    while(it.hasNext()){//获取迭代器,取出集合里面的元素

    syso(it.next());//循环打印出所有元素 }

    什么是迭代器?

    其实就是集合的取出元素的方式;我们把取出的方式定义在集合的内部,这样我们取出方式就可以直接访问集合内部的元素。

    那么取出方式就被定义成了内部类;而每一个容器的数据结构不同,所以取出的动作细节也不一样,但是都有共性内容判断和取出。

    那么刻意将这些共性抽取。(这些内部类都符合规则,该规则是Iterator。通过对外提供的方法:iterator())

    Collection中常见的两个接口List 和 Set

    List:元素是有序的,元素可以重复,因为该元素有索引。

    凡是可以操作角标的方法都是该体系的特有方法。

    add(index,element);
    addAll(index,Collection)

    remove(index);

    set(index,element);

    get(index);
    subList(from,to);
    ListIterator();
    列表迭代器:
    List集合特有的迭代器,ListIteractor是Iteractor的子接口。
    在迭代时,不可以通过集合对象的方法,操作集合中的元素,因为回发生集合并发异常,所以在迭代时,只能通过迭代器的方法操作元素。可是Iteractor的方法只能对元素进行判断,取出,删除的操作。如果想要其他的操作如:添加,修改等,就需要使用其子接口,ListIteractor,该接口只能通过List集合的listIteractor方法获取。

    ArrayList:

    底层的数据结构使用的是数组结构;特点:查询速度很快,但是增删就较慢(针对元素比较多的情况)

    linkedList

    底层是链表数据结构。特点:增删掉速度很快,查询的时候较慢

    vector

    底层是数组数据结构。和ArrayList一样,区别:线程同步

    枚举是Vector特有的取出方式
    枚举和迭代器很像,其实枚举和迭代是一样的,因为枚举的名称和方法都过长,所以被迭代器取代
    hashSet
    数据机构是哈希表,线程是非同步的。 hashSet是通过里面的hashCode和equals方法来完成元素的唯一性,如果哈希值相同,才回判断equlas是否相同,如果哈希值不同,不会调用equlas方法。
    HashSet判断和删除
    对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法

     
  • 相关阅读:
    五险一金的详细解释
    Android源码下载和编译Tips
    C++ STL遍历map的时候如何删除其中的element
    Android 2.3.4 RTSP的实现不在StageFright中,在opencore中
    找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码|
    选择适合过一辈子的人
    .net兼职人员| .net兼职系统开发人员| .net兼职开发人员
    skype帐号|超值skype帐号|14分钟skype账号|1元40个|5毛20个|15天有效期
    黄金市场的时间段分析
    解决导航问题winform的左侧树控件右侧panel加载用户控件
  • 原文地址:https://www.cnblogs.com/lv123/p/7157520.html
Copyright © 2011-2022 走看看