【JAVA集合框架相关接口和常见的实现类】

一、什么是集合框架?

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等

1.1类和接口总览

在这里插入图片描述

1.2Java 集合框架的优点及作用

1、使用成熟的集合框架,助于我们便捷、快速的写出高效、稳定的代码
2、学习背后的数据结构知识,助于我们理解各个集合优缺点及使用场景

二、接口 interfaces

2.1基本关系说明

在这里插入图片描述

1.collection:用来存储管理一组对象 objects ,这些对象一般被成为元素 elements
2. Set : 元素不能重复,背后隐含着查找/搜索的语义
3. SortedSet : 一组有序的不能重复的元素
4. List : 线性结构
5. Queue : 队列(只能尾进头出)
6. Deque : 双端队列(头和尾都可以进出)
7. Map : 键值对 Key-Value-Pair ,背后隐含着查找/搜索的语义
8. SortedMap : 一组有序的键值对

2.2Collection接口(重点)

2.2.1Collection 接口说明

Collection 接口是 List、Set 和 Queue 接口的父接口,通常情况下不被直接使用。Collection 接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。

2.2.2Collection 常用方法说明

int size() :返回集合中的元素个数
void clear() :删除集合中的所有元素
boolean add(E e): 将元素 e 放入集合中
Object[] toArray(): 返回一个装有所有集合中元素的数组
boolean isEmpty() :判断集合是否没有任何元素,俗称空集合
boolean remove(Object e) :如果元素 e 出现在集合中,删除其中一个

代码示例:

    public static void main(String[] args) {
        Collection collection = new ArrayList();
        collection.add("hello");
        collection.add("hello1");
        System.out.println(collection);
        //*********可以直接打印collection,并不是打印地址,因为重写了toString方法

//      System.out.println("======================================");
//      collection.clear();//清空集合中的元素
//      System.out.println(collection);
//      System.out.println(collection.isEmpty());

        Object[] objects = collection.toArray();//将集合当中的元素变成数组
        System.out.println(Arrays.toString(objects));//打印数组

        //提问:可以将objects1返回类型强制转换成String吗?
        String[] objects1 = (String[])collection.toArray();
        System.out.println(Arrays.toString(objects1));//打印数组
        //答案显而易见!不可以,JAVA数组不建议整体的强制类型转换,数组类容并没有全部转换**********

    }

注意事项:
Collection是一个接口,不能被实例化!只能new一个它的子类。如下:

public class CollectionInterface {
    public static void main1(String[] args) {
        //Collection collection = new Collection(); 
          Collection collection = new ArrayList();
          collection.add("hello");
          collection.add(1);
    }


2.3Map 接口(重点)

2.3.1Map 接口说明

1、Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象。用于保存具有映射关系的数据。

2、Map 集合里保存着两组值,一组值用于保存 Map 里的 key,另外一组值用于保存 Map 里的 value,key 和 value 都可以是任何引用类型的数据。Map 的 key 不允许重复,value 可以重复,即同一个 Map 对象的任何两个 key 通过 equals 方法比较总是返回 false。

3、Map 中的 key 和 value 之间存在单向一对一关系,即通过指定的 key,总能找到唯一的、确定的 value。从 Map 中取出数据时,只要给出指定的 key,就可以取出对应的 value。

4、Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

2.3.2Map 常用方法说明

int size(): 返回键值对的数量
boolean isEmpty() :判断是否为空
V get(Object k): 根据指定的 k 查找对应的 v
V put(K key, V value) :将指定的 k-v 放入 Map
boolean containsKey(Object key) :判断是否包含 key
Set<Map.Entry<K, V>> entrySet() :将所有键值对返回
boolean containsValue(Object value): 判断是否包含 value
V getOrDefault(Object k, V defaultValue):根据指定的 k 查找对应的 v,没有找到用默认值代替

代码示例:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapInterface {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("女神","迪丽热巴");
        map.put("及时雨","宋江");
        String ret = map.get("女神");
        String ret1 = map.get("女生");
        System.out.println(ret1);
        System.out.println(ret);

        //根据指定的 k 查找对应的 v,没有找到用默认值代替
        String ret3 = map.getOrDefault("及时雨","谭臣");//此时能查找到及时雨对应的宋江
        System.out.println(ret3);
        String ret4 = map.getOrDefault("及时雨3","谭臣");//此时没有查找到及时雨3对应的Value,就将谭臣赋予给它
        System.out.println(ret4);

        //判断是否包含 key   containsValue:判断是否包含Value
        boolean ret5 = map.containsKey("女神");
        System.out.println(ret5);
    }

    public static void main1(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("及时雨","宋江");
        map.put("女神","迪丽热巴");
        System.out.println(map); //打印顺序和结果顺序为什么不一样呢?是因为key经过哈希函数去映射找到对应的位置,找到对应的value。所以不是说先打印的位置就一定在前
        System.out.println("==================");

        //将key和value包装起来,放到entrySet  将所有键值对返回
        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        for (Map.Entry<String,String> entry:entrySet) {
            System.out.println("key:"+entry.getKey()+"value:"+entry.getValue());
        }

    }

}

三、实现 classes

在这里插入图片描述
除此之外,我们还会学习 java 中的栈 Stack


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值