JavaSE-12 【集合】

JavaSE-12 【集合】

第一章、Java集合

1、Java集合就像一个容器

  • 可以存储任何类型的数据,
  • 可以结合泛型来存储具体的类型对象。
  • 在程序运行时,Java集合可以动态的进行扩展,随着元素的增加而扩大。

2、Java中,集合类通常存在于java.util包中

3、Java集合主要由2大体系构成

  • 分别是Collection体系和Map体系
  • 其中Collection和Map分别是2大体系中的顶层接口

4、Collection主要有三个子接口

  • 分别为List(列表)、Set(集)、Queue(队列)。其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复

  • List中主要有ArrayList、LinkedList两个实现类;

  • Set中则是有HashSet实现类

  • Queue是在JDK1.5后才出现的新集合,主要以数组和链表两种形式存在

5、Map同属于java.util包中,是集合的一部分:但与Collection是相互独立的,没有任何关系

  • Map中都是以key-value的形式存在
  • 其中key必须唯一,key可以为空,value可以为空,可重复
  • 主要有HashMap、HashTable、treeMap三个实现类

第二章、Collection介绍

2.1 Connection是什么:

Java是一门面向对象的语言,为了方便操作多个对象,想要存储多个对象(变量),需要一个容器,那就是collection

常用容器

  • 常用的容器有:StringBuffered,StringBuilder,数组。
  • 但是由于数组的长度固定;访问方式单一,只能用下标,
  • 删除数据,数据不连续,需要往前移动数据
  • 插入数据,数据要向后移动,这些缺点
  • 所以,java就为我们提供了集合(Collection)

2.2 集合与数组的区别

长度的区别:数组的长度固定;集合的长度可变

内容的区别:数组存储的是同一种类型的元素,集合可以存储不同类型的元素(一般不这样做)

元素的数据类型:数组可以存储基本数据类型,和引用类型。集合只能存储引用类型(若是简单的int,它会自动装箱成Integer)

2.3 Collection的功能

集合可以存储多个元素,但对多个元素也有不同的需求

  • 多个元素,不能有相同的
  • 多个元素,能够按照某个规则排序

针对不同的需求:java就提供了很多集合类,多个集合类的数据机构不同,但是,数据结构不重要,重要的是能够存储东西,能够判断,获取。把集合共性的内容不断往上提取,最终形成集合的继承体系———Collection

2.4 Collection和Map的继承体系结构

(4接口,9个类)

 ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tva4fYnE-1687769946090)(photo/JavaSE12_集合.assest/71c86975efae47bbaecce40bc005638a.png)\]](https://img-blog.csdnimg.cn/8a5d1b17c6c6451383edbce0b43c2f49.png)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ikombwtn-1687769946091)(photo/JavaSE12_集合.assest/b7485a227b8040f2bb4b60f3b81740b5.png)]

2.5 Collection常用API

	添加功能:
		boolean add(Object obj) 添加一个元素
		boolean addAll(Collection c) 添加一个集合元素
	获取功能:
		Iterator<E> iterator() 迭代器
		int size() 获取元素的个数即集合的长度
		Object[] toArray() 将集合转为数组
	删除功能:
		void clear() 移除所有元素
		boolean remove(Object) 移除一个元素
		boolean removeAll(Collection c) 移除一个集合的元素,只要一个元素被移除课就返回true
	判断功能:
		boolean contains(Object o) 判断集合是否包含该元素
		boolean containsAll(Collection c) 判断集合中是否包含指定的集合元素,只有包含所有的元素才叫包含
		boolean isEmpty() 判断集合是否为空
	交集功能:
		boolean retainAll(Collection c)
	 	移除此collection中未包含在指定collection中的所有元素
	 	即:集合A和集合B做交集,最终的结果会保存在集合A,返回值表示的是集合A是否发生过变化

2.6 Collection的API案例

package com.zzy.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**
 * 测试Collection集合
 */
public class TestCollection {
   
    public static void main(String[] args) {
   

        Collection<Integer> c1 = new ArrayList<>();

        //1 添加元素
        c1.add(1);
        c1.add(2);
        c1.add(3);
        c1.add(4);
        c1.add(5);
        c1.add(6);
        c1.add(7);
        c1.add(8);
        c1.add(1024);

        //2 删除元素
        c1.remove(1024);

        //3 获取长度
        int size = c1.size();
        System.out.println("集合长度是: "+size);

        // 4 判断是否为空
        boolean empty = c1.isEmpty();
        System.out.println("集合为空否: "+empty);

        //5 集合转数组
        Object[] toArray = c1.toArray();
        System.out.println("集合转数组后的结果是: "+ Arrays.toString(toArray));

        //6 遍历集合iterator()
        Iterator<Integer> iterator = c1.iterator();
        while (iterator.hasNext()){
   
            System.out.println(iterator.next());
        }

        System.out.println("-------------------");

        Collection<String> c2 = new ArrayList<>();
        c2.add("A");
        c2.add("B");
        c2.add("C");
        //7 判断集合是否包含元素 A
        boolean a = c2.contains("A");
        System.out.println("包含与否"+a);

        Collection<String> c3 = new ArrayList<>();
        c3.add("孙悟空");
        c3.add("猪八戒");
        c3.add("沙和尚");
        c3.add("白龙马");
        //8 清空集合
        c3.clear();
        System.out.println(c3.toString());

        /*
            addAll(Collection c) 添加一个集合元素
            removeAll(Collection c)
		        移除一个集合的元素,只要一个元素被移除就返回true
            containsAll(Collection c)
		        判断集合中是否包含指定的集合元素,只有包含所有的元素才叫包含
            retainAll(Collection c)
	             移除此collection中未包含在指定collection中的所有元素
	                即:集合A和集合B做交集,最终的结果会保存在集合A,
	                返回值表示的是集合A是否发生过变化
         */

        Collection<String> c5 = new ArrayList<>();
        Collection<String> c6 = new ArrayList<>();
        Collection<String> c7 = new ArrayList<>();
        Collection<String> c8 = new ArrayList<>();

        c5.add("AA");
        c5.add("BB");

        c6.add("北京");
        c6.add("成都");
        c6.add("重庆");
        c6.add("福州");

        c7.add("福州");

        c8.add("北京");
        c8.add("成都");
        c8.add("重庆");

        //添加一个集合元素
        c5.addAll(c6);
        System.out.println(c5.toString());

        //移除一个集合的元素
        System.out.println("移除成功与否:"+c5.removeAll(c7));
        System.out.println(c5.toString());

        //判断集合中是否包含指定的集合元素
        System.out.println("判断集合中是否包含是定集合元素:"+c5.containsAll(c8));

        Collection<String> c11 = new ArrayList<>();
        Collection<String> c12 = new ArrayList<>();
        c11.add("AA队");
        c11.add("BB队");
        c11.add("CC队");
        c11.add("DD队");
        c12.add("AA队");
        c12.add("BB队");
        c12.add("FF队");
        
        //移除此collection中未包含在指定collection中的所有元素
        System.out.println("C11是否发生变化:"+c11.retainAll(c12));
        System.out.println(c11.toString());
        System.out.println("C12是否发生变化:"+c12.retainAll(c11));
        System.out.println(c12.toString());
    }
}

第三章、List集合

在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素

在List集合中,我们常用到ArrayList和LinkedList这两个类。

3.1 ArrayList集合

1 介绍:

- 底层通过数组实现,随着元素的增加而动态扩容
- ArrayList默认构造的容量为10,默认扩容1.5倍,新容量 = 旧容量 * 1.5
- Java集合框架中使用最多的一个类,是一个数组队列,线程不安全集合。

2 特点

- 容量不固定,随着容量的增加而动态扩容的有序集合
- 插入的元素可以为null
- 增删改查效率更高(相对于LinkedList来说)
- 线程不安全

3 功能

- ArrayList实现List,得到了List集合框架基础功能;
- ArrayList实现RandomAccess,获得了快速随机访问存储元素的功能,RandomAccess是一个标记接口,没有任何方法;
- ArrayList实现Cloneable,得到了clone()方法,可以实现克隆功能;
- ArrayList实现Serializable,表示可以被序列化,通过序列化去传输,

4 常用API

添加功能
	boolean add(E e):向集合中添加一个元素
	void add(int index, E element):在指定位置添加元素
	boolean addAll(Collection<? extends E> c):
		向集合中添加一个集合的元素。

删除功能
	void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值