Java中的小知识 ----- 集合

为什么使用集合?

开发中会使用大量相同数据类型的情况,如果使用数组来解决问题
    1.数组能够使用的方法非常少,功能方法需要程序员自己完成
    2.数据类型单一化,不支持多种情况
    3.数组容量一旦确定不容易更改
而集合解决了以上问题:
    1.方法多种多样,基本功能完善
    2.数据类型支持多样化,但是又不失数据类型一致要求
    3.容量可以更改,且不用开发者操心

集合架构

Java中集合的【总接口】Collection<E>,Java中所有和集合有关的内容都是
Collection<E>接口的子类或者实现类

interface Collection<E>包含:
    interface List<E> List接口有序可重复,而List接口包含:
        class ArrayList[重点]可变长数组结构
        class LinkedList[重点] 双向链表结构
        class Vector 线程安全的ArrayList,如果不考虑安全问题,建议使用ArrayList
    interface Set<E> Set接口,无序不可重复,包含:
        HashSet<E> 底层存储数据的方式是采用哈希表的方式
        TreeSet<E> 底层存储数据的方式是采用平衡二叉树的方式

Collection<E>接口下的常用方法

增:
boolean add(E e); 
    存入元素到当前集合对象中,这里要求的数据类型是E类型,也就是泛型对应的具体数据类型
boolean addAll(Collection<? extends E> c); 把c添加到其他集合中
    ? extends E : 泛型的上限,要求集合C中,存储的元素要么是E类型,要么是E类型的子类
        class dog extends Animals;
        class cat extends Animals;
        ?就是dog、cat
        E就是Animals     
删:
void clear();
    清空整个集合
boolean remove(Object obj);
    删除集合中的指定元素
boolean removeAll(Collection<?> c);
    删除两个集合的交集
boolean retainAll(Collection<?> c);
    保留两个集合的交集
查:
int size();
    返回集合中有效元素的个数
boolean contains(Object obj);
    判断指定元素在当前集合中是否存在
boolean containsAll(Collection<?> c);
    判断集合c是不是当前集合的子集合

部分代码实现

package com.wcc.a;

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

/**
 * @Author kk
 * @Date 2020/3/14 20:10
 */
public class Demo1 {
    public static void main(String[] args) {
        /*
            因为Collection<E>使用一个接口,接口没有自己的类对象
            这里使用Collection接口的实现类来完成演示过程ArrayList<E>
         */
        //接口的引用指向接口的类对象,多态
        Collection<String> c = new ArrayList<>();
        c.add("小江");
        c.add("小坤");
        c.add("小江江");
        c.add("小坤坤");
        System.out.println(c);

        Collection<String> c1 = new ArrayList<>();
        c1.add("小j");
        c1.add("小k");
        c1.add("小kk");
        c.addAll(c1);
        System.out.println(c);

      //  c.remove("小j");
      //  System.out.println(c);

      //  c.removeAll(c1);
      //  System.out.println(c);

      //  c.retainAll(c1);
      //  System.out.println(c);

        System.out.println(c.size());

        System.out.println(c.contains("小坤"));
        System.out.println(c.contains("小王"));

        System.out.println(c.containsAll(c1));
    }
}

未完待续....

发布了25 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42597414/article/details/104862492