集合概述以及常用API

本文详细介绍了Java集合框架中的Collection集合,包括集合概述、常用API、遍历方法(迭代器、foreach、lambda)以及存储自定义类型对象。深入探讨了数据结构,如栈、队列、数组、链表、二叉树和红黑树。此外,还讲解了List系列集合,特别是ArrayList和LinkedList的底层原理,以及并发修改异常和泛型的深入理解,包括泛型类、方法和接口的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

一.集合概述

  • 集合和数组都是容器
  • 数组是定义完成启动的,类型确定、长度确定,在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有的数组或者移位
  1. 数组适合的场景
  • 当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采用定义的数组存储

2.集合是Java中存储对象数据的一种容器

  • 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定,集合像一个气球
  • 集合适合做元素的增删操作
  • 注:集合只适合存储引用类型数据,如果要存储基本数据类型可以选择包装类

3.集合适合的场景

  • 数据的个数不确定,需要进行增删元素的时候

二.Collection集合的体系特点

集合体系结构
在这里插入图片描述
在这里插入图片描述

/**
 * 目标:明确Collection集合体系的特点
 */
public class CollectionDemo1 {
   
    public static void main(String[] args) {
   
        //有序,可重复,有索引
        Collection list=new ArrayList();
        list.add("Java");
        list.add("Java");
        list.add("Mybatis");
        list.add(23);
        list.add(23);
        list.add(23);
        System.out.println(list);//[Java, Java, Mybatis, 23, 23, 23]
        //无序,不可重复,无索引
        Collection list1=new HashSet();
        list1.add("Java");
        list1.add("Java");
        list1.add("Mybatis");
        list1.add(23);
        list1.add(23);
        list1.add(false);
        list1.add(false);
        System.out.println(list1);//[Java, false, 23, Mybatis]
    }
}

集合对于泛型的支持

  • 集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型

注:集合和泛型都只支持引用数据类型,不支持基本数据类型,所以集合存储的元素被看做是对象

三.Collection集合的常用API

Collection集合

  • Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的

CollectionAPI接口如下:

public class CollectionDemo {
   
    public static void main(String[] args) {
   
        //HashSet:添加元素是无序,不重复、无索引
        Collection<String> list=new ArrayList<>();
        //1.添加元素,添加成功放回true
        list.add("Java");
        list.add("HTML");
        System.out.println(list.add("HTML"));
        list.add("MySQL");
        list.add("Java");
        System.out.println(list.add("黑马"));
        System.out.println(list);
        //2.清空集合的元素
      //  list.clear();
       // System.out.println(list);
        //3.判断集合是否为空,是空返回true,反之。
        System.out.println(list.isEmpty());//false
        //4.获取集合的大小
        System.out.println(list.size());
        //判断集合是否包含某元素
        System.out.println(list.contains("HTML"));//true
        System.out.println(list.contains("java"));//false
        //6.删除某个元素,如果有多个重复的元素,默认删除前一个
        System.out.println(list.remove("java"));//false
        System.out.println(list);
        System.out.println(list.remove("Java"));//true
        System.out.println(list);
        //7.把集合转换成数组,[HTML, HTML, MySQL, Java, 黑马]
        Object[] arrs=list.toArray();
//        for(int i=0;i< arrs.length;i++){
   
//            System.out.println(arrs[i]);
//        }
        System.out.println(Arrays.toString(arrs));//[HTML, HTML, MySQL, Java, 黑马]
        System.out.println("--------------拓展------------------");
        Collection<String> list1=new ArrayList<>();
        list1.add("java1");
        list1.add("java2");
        Collection<String> list2=new ArrayList<>();
        list2.add("HTML1");
        list2.add("HTML2");
        //addAll()  把list2中的元素倒入到list1中去
        list1.addAll(list2);
        System.out.println(list1);
        System.out.println(list2);
    }
}

四.Collection 集合的遍历方法

方式一:迭代器

1.迭代器遍历概述

  • 遍历就是一个一个的把容器中的元素访问一遍
  • 迭代器在Java中的的代表是iterator,迭代器是集合的专用遍历方式

2.Collection集合获取迭代器
2.1Iterator iterator() 返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引
2.2iterator中的常用方法
boolean hasNext() //访问当前位置是否有元素存在,存在返回true,不存在返回false
E next()//获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界

public class CollectionDemo01 {
   
    public static void main(String[] args) {
   
        Collection<String> lists=new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("霉素");
        lists.add("灭绝");
        System.out.println(lists);
        // [赵敏, 小昭, 霉素, 灭绝]
        //  it
        //1.得到当前的迭代器对象
        Iterator<String> it=lists.iterator();
//        String ele=it.next();
//        System.out.println(ele);
//        System.out.println(it.next());//next先取元素,后移位
//        System.out.println(it.next());
//        System.out.println(it.next());
        //System.out.println(it.next());//NoSuchElementException出现无此元素异常的错误
        //2.定义while循环
        while(it.hasNext()){
   
            String ele=it.next();
            System.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值