• Java,集合框架,关于Collection接口(子接口List和Set)


    数组储存多个数据方面的特点:

    ·数组一旦初始化,其长度就是确定的。

    ·数组中的多个元素是依次紧密排列的,有序的,可重复的。

    ·数组一旦初始化完成,其元素的类型就是确定的。不是此类型的元素,就不能添加到此数组中。

    数组储存多个数据方面的弊端:

    ·数组一旦初始化,其长度就是确定的。

    ·数组中储存数据特点的单一性。对于无序的不可重复的场景就不适用了。

    ·数组中可用的方法、属性都极少。具体的需求,要自己编写相关代码。

    ·元素的类型既可以是基本数据类型,也可以是引用数据类型。

    ·针对于数组中元素的删除,插入操作,性能比较差。

    Java集合框架体系:(Java.util包下)

    两个接口:

    java.util.Collection:存储一个一个的数据。

            ——子接口:

    ①List:存储有序的,可重复的数据。(“动态”数组,即变长数组)

    ·实现类:ArrayList(主要的实现类)、LinkedList、Vector

    ②Set:存储无序的,不可重复的数据。(类似于集合)

    ·实现类:HashSet(主要实现类)、LinkedHashSet、TreeSet

    java.util.Map:存储一对一对的数据。(key-value键值对,类似于数学的函数)

    实现类:HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties


    Collection接口中的方法测试:

    与添加相关:

    (1) add(Object obj):添加元素对象到当前集合中。

    (2)addAll(Collection other):添加other集合中的所有元素对象到当前集合中。

    与判断相关:

    (3)int size( ):获取当前集合中实际存储的元素个数。

    (4)boolean isEmpty( ):判断当前集合是否为空集合。(其实是判断size的大小是否为零)

    (5)boolean contains(Object obj):判断当前集合中是否存在一个与obj对象equals返回true的元素。(如果包含自定义类,建议重写equals方法)

    (6) boolean containsAll(Collection coll):判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集”。

    (7)boolean equals(Object obj):判断当前集合与obj是否相等。

    与删除相关:

    (8)void clear( ):清空集合元素

    (9) boolean remove(object obj):从当前集合中删除第一个找到的与obj对象equals返回true的元素。

    (10)boolean removeAl(Collection coll):从当前集合中删除所有与coll集合中相同的元素。

    (11) boolean retainAll(Collection coll):从当前集合中删除两个集合中不同的元素,使得当前集合仅保留与col(集合中的元素相同的元素,即当前集合中仅保留两个集合的交集。

    其他:

    (12) Object[ ] toArray( ):返回包含当前集合中所有元素的数组。

    (13)hashCode( ):获取集合对象的哈希值。

    (14)iterator( ):返回迭代器对象,用于集合遍历。

    集合与数组的相互转换:

    集合转换为数组:调用方法toArray( )。

    数组转化为集合:调用Arrays的静态方法asList(Object ... objs)。

    向Collection中添加元素的要求:

    要求元素所属的类一定要重写equals( )。因为Collection中的相关方法在使用时,要调用元素所在类的equals( )。


    迭代器(Iterator)的作用:用来遍历集合元素。

    获取迭代器的方式:

    Tterator ii = 集合对象.iterator;

    迭代的方式:

    用iterator.hasNext( )方法作为循环的判断条件,再循环遍历集合元素。

    1. Person pp = new Person(19,"Lily");
    2. Collection cc = new ArrayList();
    3. cc.add("aaa");
    4. cc.add(111223);//自动装箱为Integer类型再作为参数
    5. cc.add(pp);
    6. Iterator iterator = cc.iterator();
    7. while(iterator.hasNext())
    8. {
    9.     System.out.println(iterator.next());
    10. }

    next的作用:①将指针指向的集合元素向下移②将下移后指针位置上的元素返回。


    增强for循环(即foreach循环)的使用:

    作用:用来遍历数组、集合。

    格式:

    for(要遍历的集合或数组的元素的类型 临时变量 : 要遍历的集合或数组变量)

    {

            //操作临时变量

    }

    说明:

    针对于集合来讲,增强for循环的底层使用的是迭代器。

    增强for循环的执行过程中,是将集合或数组中的元素依次赋值给临时变量。


    List接口中常用方法的测试:

    List接口中存储数据的特点:

    用于存储有序的、可以重复的数据。(有时使用List来替代数组,变长数组)

    List中的常用方法:

    第一批:Collection中声明的方法

    第二批:因为List是有序的,所以有一些针对索引操作的方法。

    插入元素

    void add(int index,Object ele):在index位置插入ele元素

    boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来

    获取元素

    Object get(int index):获取指定index位置的元素

    List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合

    获取元素索引

    int indexOf(Object obj):返回obj在集合中首次出现的位置

    int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置

    删除和替换元素

    Object remove(int index):移除指定index位置的元素,并返回此元素。

    (假设要删除索引为2的元素,参数输入2即可。但是要删除值为2的元素,就要将2包装为Intrger类型(因为参数要Object,参数输入2时,会优先将2识别为int 类型的index。)后再传入参数。

    Object set(int index, Object ele):设置指定index位置的元素为ele。


    List接口的实现类特点:

    ·ArrayList:List接口的主要实现类。线程不安全的,效率高。底层使用Object[ ]数组存储。在添加数据、查找数据时效率较高,在插入数据,删除数据时效率较低。

    ·LinkedList:底层使用双向链表的方式进行存储。在插入数据,删除数据时效率较高,在添加数据、查找数据时效率较低。(在对集合中的数据进行频繁地删除、插入的操作时,建议使用此类。)

    ·Vector:List接口的古老实现类。线程安全的,效率低。底层使用Object[ ]数组存储。

  • 相关阅读:
    数据库系统概论(超详解!!!) 第三节 关系数据库标准语言SQL(Ⅳ)
    ORB-SLAM2 ---- Frame::UndistortKeyPoints函数
    基于沙猫群优化的BP神经网络(分类应用) - 附代码
    LQ0190 李白打酒【填空题】
    springboot解决multi-statement not allow(已部署生产)
    Android逆向之重新打包APK
    8.vue的双向绑定的原理是什么
    商场里的导购图怎么制作?在商场内怎么导航?
    数据结构与算法-图
    Win10系统Charles/Fiddler抓包无反应处理
  • 原文地址:https://blog.csdn.net/2302_79468488/article/details/134475065