集合框架(一)Collection

小明 2025-05-06 07:44:04 4

���习过了ArrayList,知道集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。

为了满足不同的业务场景需求Java还提供了很多不同特点的集合给我们选择。

集合体系结构

Collection是一个接口,并且是支持泛型的接口,这个接口只规定了单列集合的特点,比如基本的增删改查,同时Collection下面又有很多子接口List接口和Set接口 

Collection的常用方法

collection提供的所有的常见方法是所有单列集合都可以直接去使用的。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class CollectionTest2API {
    public static void main(String[] args) {
        /*首先肯定要用collection定义一个集合,集合类型是String类型的数据,
        collection是接口不能之间new对象,那就挑一个他的实现类ArrayList的集合对象
        给到Collection集合的变量c来记住*/
        Collection c = new ArrayList();//多态写法
        //1.public boolean add(E,e):添加元素,添加成功返回true
        c.add("java1");c.add("java1");c.add("java2");c.add("java2");c.add("java3");
        System.out.println(c);
        //2.public void clear(E e):清空集台中所有的元素。
        //c.clear();
        //System.out.println(c);
        //3.public boolean isEmpty():判断当前集合是否为空。
        System.out.println(c.isEmpty());
        //4.public int size():返回集合中元素的个数。(获取集合的大小)
        System.out.println(c.size());
        //5.public boolean contains(0bject obj): 判断当前集合中是否包含给定的对象
        System.out.println(c.contains("java1"));
        System.out.println(c.contains("Java1"));
        //6.public boolean remove(E e):把给定的对象在当前集合中删除:如果有相同的元素他会删除前面一个元素
        System.out.println(c.remove("java1"));
        System.out.println(c);
        //7.public object[] toArray():把集合中的元素,存储到数组中。
        Object[] arr = c.toArray();
        System.out.println(Arrays.toString(arr));//可以用Arrays调用toString方法把数组打印出来
        //非要把集合转为字符串数组怎么办:
        /**
         *用c调用toArray方法在括号里面new一个String类型的数组
         * 在中括号里面可以填上元素的大小
         * 这样就相当于指定了一个String类型的数组,也就是一个容器给到底层
         * 底层就会把集合中的元素遍历出来给到数组
         * 再去接她返回的结果就是一个String类型的数组返回给我们
         * 这样就会得到指定类型的数组
         */
        String[] arr2 =  c.toArray(new String [c.size()]);
        System.out.println(Arrays.toString(arr2));
        System.out.println("--------------------------------------------------------");
        //把一个集合的全部数据倒入到另一个集合中去
        Collection c1 = new ArrayList();
        c1.add("java1");
        c1.add("java2");
        Collection c2 = new ArrayList();
        c2.add("java3");
        c2.add("java4");
        c1.addAll(c2);//就是把c2集合中的全部数据(拷贝了一份倒进去)倒入到c1中去,(相当于批量添加数据了)注意:数据类型要相适应
        System.out.println(c1);
        System.out.println(c2);//c2的数据还是有的
    }
}

collection的遍历方式

1.迭代器(Iterator)

首先,一定要通过集合对象调用Iterator()方法,就会得到一个集合的迭代器对象,迭代器对象默认指向当前集合的第一个元素的;接着就可以用迭代器的常用方法来遍历集合。一个是hasNext()方法,一个是next()。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionDemo1 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("赵敏");
        c.add("小邵");
        c.add("速速");
        c.add("灭绝");
        System.out.println(c);
        //c = [赵敏, 小邵, 速速, 灭绝]
        //      it
        //使用迭代去遍历集合
        //1.从集合对象中获取迭代器对象。
        Iterator it = c.iterator();
        /*System.out.println(it.next());
        System.out.println(it.next());//从取完第一个之后,再从第二个
        System.out.println(it.next());//第三个
        System.out.println(it.next());//第四个*/
        //System.out.println(it.next());//第五个没有就会出现异常,所以不要越界
        //2.应该使用循环结合迭代器遍历集合
        while(it.hasNext()){//如果有数据就会返回true 进到循环里面来
            String ele= it.next();//此时就使用next方法来取出数据,取出来之后会移到下一个位置
            System.out.println(ele);
            //System.out.println(it.next());
            
        }
    }
}

2.增强for

如果使用for循环,那么这个集合就必须要支持索引的,但collection并没有规定结合的索引问题,只有List集合才支持索引。所以collection是不支持直接用for循环来遍历的。

 

import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo2 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("赵敏");
        c.add("小邵");
        c.add("速速");
        c.add("灭绝");
        System.out.println(c);
        //c = [赵敏, 小邵, 速速, 灭绝]
        //      ele
        //使用增强for循环遍历集合或者数组
        for (String ele : c) {
            System.out.println(ele);
        }
        //c.for再回车
        /*for (String els : c) {
        }*/
        String[] names = {"的卡拉", "大法师", "北京人", "咖啡馆"};
        for (String name : names){
            System.out.println(name);
        }
    }
}

3.Lambda表达式

 

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("赵敏");
        c.add("小邵");
        c.add("殷速速");
        c.add("周芷若");
        System.out.println(c);
        //c = [赵敏, 小邵, 殷速速, 周芷若]
        //      s
        //default void forEach(Consumer
The End
微信