Preliminary understanding of collection

1. Why use collections

数组在使用的时候:

​		1.要定义容器的大小,超了直接报异常

​		2.数组的操作的方法是很少的,没有封装。

​		3.数据也是比较单一

期望有一个java的方式,可以把那些数组方法题封装到一起,供程序员使用。

Collection 集合 【接口】

​		完成了一系列的增删改查的操作

Second, the structure of the collection

Collection<E> java中所有集合的总接口
--List<E> Collection下面的子接口,特征:有序的,可重复的。
----AbstractList是实现了 List 接口的抽象类
--------ArrayList<E>重点  可变长的数组容器, ArrayList是一个类 
--------LinkedList<E>链表数组
--------Vector <E>安全版本ArrayList
--Set<E>也是Collection下面的子接口。特征:无序的,不可重复的
----HashSet<E> 底层是一个hash表
----TreeSet<E> 底层是一个树结构

Three, the commonly used methods of collection

As long as the collection interface or the sub-interface of collection is implemented, all methods under collection can be used

increase:

boolean add(E e):添加指定的元素到Collection集合中,尾插法,存在泛型的约束
boolean addAll(Collection <? extends E> c):添加一个集合到另外一个集合中

delete:

remove(Object o):删除在集合中指定的元素
removeAll(Collection<?> c):删除两个集合的交集
retainAll(Collection<?> c):保留两个集合的交集
clear():清空集合

check:

int size():获取集合中元素的个数
Object[] toArray():返回整个集合中所有元素的Object类型的数组
boolean contains(Object o):判断指定的元素是否在当前的集合中
boolean containsAll(Collection<?> c):判断指定的集合是否是当前集合的子集
boolean isEmpty():判断当前集合是否为空

Example:

import java.util.ArrayList;
import java.util.Collection;

/**
 * @author xue_yun_xiang
 * @create 2021-03-15-8:18
 */
public class CollectionTest {
    
    
    public static void main(String[] args) {
    
    

        //boolean add(E e)
        Collection<String> list = new ArrayList<>();
        list.add("王一");
        list.add("王二");
        list.add("王三");
        System.out.println(list);//[王一, 王二, 王三]

        //boolean addAll(Collection<? extends E> c)
        Collection<String> list1 = new ArrayList<>();
        list1.add("李一");
        list1.add("李二");
        System.out.println(list1);//[李一, 李二]
        list.addAll(list1);
        System.out.println(list);//[王一, 王二, 王三, 李一, 李二]

        //不同类型无法添加的测试
        Collection<Integer> list2 = new ArrayList<>();
        list2.add(1);
        //list.addAll(list2);编译报错

        //remove(Object o)
        ArrayList<Integer> list3 = new ArrayList<>();
        list3.add(1);
        list3.add(2);
        list3.add(3);
        list3.add(4);
        list3.add(5);
        System.out.println(list3);//[1, 2, 3, 4, 5]
        list3.remove(2);
        System.out.println(list3);//[1, 2, 4, 5]

        ArrayList<Integer> list4 = new ArrayList<>();
        list4.add(4);
        list4.add(5);
        list4.add(6);
        list4.add(7);
        list4.add(8);
        System.out.println(list4);//[4, 5, 6, 7, 8]

        //removeAll(Collection<?> c)
        //list3.removeAll(list4);
        //System.out.println(list3);//[1, 2]

        list3.retainAll(list4);
        System.out.println(list3);//[4, 5]

        ArrayList<String> list5 = new ArrayList<>();
        list5.add("张一");
        list5.add("张二");
        list5.add("张三");
        list5.add("张四");
        list5.add("张五");
        System.out.println(list5);//[张一, 张二, 张三, 张四, 张五]

        //int size()
        System.out.println(list5.size());//5

        //boolean  contains(Object o)
        System.out.println(list5.contains("张二"));//true

        //boolean  isEmpty()
        System.out.println(list5.isEmpty());//false

        ArrayList<String> list6 = new ArrayList<>();
        list6.add("张四");
        list6.add("张五");
        list6.add("张六");
        System.out.println(list6);//[张四, 张五,张六]

        //boolean  containsAll(Collection<?> c):判断指定的集合是否是当前集合的子集合
        System.out.println(list5.containsAll(list6));//false

        //Object[]  toArray()
        Object[] objects = list5.toArray();
        for (Object o : objects) {
    
    
            System.out.print(o + " ");//张一 张二 张三 张四 张五
        }
    }
}

Four, iterator

迭代器提供的另外一种操作集合的方式:

for循环      增强for循环  迭代器

获取迭代器对象:

​	通过集合对象获取迭代器

​			Iterator<E> iterator();

常用的方法:

​		boolean hasNext();判断是否继续遍历。

​		object  next();获取当前迭代器指向的元素,并且指向下一个元素

​		void remove(); 删除,迭代器循环里不能使用对象移除数据,只能使用迭代器移除!!!!!!

Example:

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author xue_yun_xiang
 * @create 2021-03-15-13:28
 */
public class IteratorTest {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(2);
        list.add(3);
        list.add(5);
        list.add(5);
        list.add(6);
        list.add(1);

        //1、获取迭代器对象 Iterator
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
    
    
            System.out.print(iterator.next() + " ");
            iterator.remove();//打印一个移除一个,迭代器循环里不能使用对象移除数据,只能使用迭代器移除!!!!!!
        }
        System.out.println();
        System.out.println(list.isEmpty());
    }
}

operation result:

10 2 3 5 5 6 1 
true

Guess you like

Origin blog.csdn.net/xue_yun_xiang/article/details/114825161