Collection接口中的ArrryList具体的类

Collecction接口

目前为止学习的容器有

1.数组:长度一旦确定就不能更改,对于同一个数组中,既可以是存放基本数据类型元素的数组,也可以是存放引用数据类型数组
2.StringBuffer:无论存放什么类型的元素,一旦进入到StringBuffer,都是以字符类型的形式存储,长度可以改变
3.集合:结合了数组和长度可变的优点
集合是一个统称,并不是指某一种类。
属于的集合既然是一个容器,那么这些容器都有一些相同的共性。
这里学习的本质上是不同的集合类,这些集合类之间有相同的属性或者行为,集合与集合之间会形成继承体系。
比如有些集合不允许元素重复,有些集合允许元素重复,有些集合可以对元素进行排序,有些集合对查找有更好的支持....
换句话说,就是不同的集合底层的数据结构不同,导致了不同的集合具有不同的特点

集合的种类

集合继承体系

ArrayList

ArrayList是实现了List接口的具体子类,List接口是继承自Collection接口
   借助创建ArrayList对象,来使用学习Collection接口中的方法

   ArrayList类中有一个无参构造方法,可以让我们创建一个空的集合

   Collection中的抽象方法一定会在具体子类ArrayList中找到实现:
       boolean add(E e)   E就类似于Object
       boolean remove(Object o)
       void clear()
       boolean contains(Object o)
       boolean isEmpty()
       int size()

   注意:
       1、java中的集合只能存储引用数据类型
       2、集合长度是可变的,集合可以存储不同类型的对象

现在先通过ArrayList来学习Collection的方法

package com.shujia.day11;
import java.util.Collection;
import java.util.ArrayList;

public class CollectionDemo2 {
    public static void main(String[] args) {
        Collection c1=new ArrayList();
        //boolean add(E e) 向集合中添加元素  可以存放任意引用类型
        c1.add(10);//这里有自动装箱  int:10---->Integer
          /*
            ArrayList extends AbstractList
            AbstractList extends AbstractCollection
         */
        c1.add(12.34);
        c1.add("hello");
        c1.add(true);
        c1.add(true);//重复值得是允许ArrayList里面允许重复
        c1.add(false);
        System.out.println(c1);//[10] 这里重写了ArrayList()的方法   toString()底层实际使用的是ArrayList的父类的父类AbstractCollection中的toString()

        //boolean remove(Object o)
        c1.remove(true);//只会删除一次
        c1.remove("asas");//若没有值,不会报错,不会对其进行操作
        System.out.println(c1);

        //void clear()
//        c1.clear();

        //boolean contains(Object o)  判断集合中是否包含某个元素
        System.out.println(c1.contains(12.34));

        //boolean isEmpty()  判断集合是否为空
        System.out.println(c1.isEmpty());

        //int size()   获取集合中的元素个数
        System.out.println(c1.size());
    }
}
Collection中的方法:
    boolean addAll(Collection c)
    boolean removeAll(Collection c)
    boolean containsAll(Collection c)
    boolean retainAll(Collection c)
package com.shujia.day11;
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c1=new ArrayList();
        c1.add("java");
        c1.add("maven&git");
        c1.add("redis");
        c1.add("clickhouse");
        c1.add("hadoop");

        Collection c2=new ArrayList();
        c2.add("java");
        c2.add("clickhouse");
        c2.add("hadoop");
        c2.add("hive");

        System.out.println("c1"+c1);
        System.out.println("c2"+c2);

        //boolean addAll(Collection c)   将一个元素集合中的元素添加到另一个集合中
        c1.addAll(c2);
        System.out.println(c1);
    }
}

遍历集合

如何遍历一个集合:
Object[] toArray()
把集合转成数组,可以实现集合的遍历

Iterator iterator()
迭代器,集合的专用遍历方式

今后学习集合的4步骤:
    1、创建集合对象
    2、创建元素对象
    3、向集合中添加元素
    4、遍历集合
package com.shujia.day11;
import java.util.Collection;
import java.util.ArrayList;

public class CollectionDemo4 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c1=new ArrayList();
        c1.add("java");
        c1.add("maven");
        c1.add("clickhouse");
        System.out.println("c1"+c1);
        // Object[] toArray() 将集合转成数组,遍历数组,得到集合中每个元素
        Object[] arr=c1.toArray();
        for (int i=0;i<arr.length;i++){
            //向下转型
            String s=(String) arr[i];
            System.out.println(s+","+s.length());
        }
    }
}

posted @ 2024-03-06 14:52  peculiar-  阅读(32)  评论(0)    收藏  举报