IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JavaAPI(集合框架) -> 正文阅读

[Java知识库]JavaAPI(集合框架)

集合框架

Java集合框架体系结构

  • Collection接口存储一组不唯一,无序的对象
  • List接口存储一组不唯一,有序(插入顺序)的对象
  • Set接口存储一组唯一,无序的对象
  • Map接口存储一组键值对象,提供key到value的映射(成对出现可以通过key找value,key是唯一的,无序的)

分为四大部分

? 1、Clollection集合

? 2、Map集合

? 3、Inerator迭代器

? 4、Utilities 工具类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SneislhR-1651212730847)(D:\note\Java高级特性\图片笔记\Java集合框架.jpg)]

List接口的实现类

  • ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
    1. 长度可变的数组
    2. 遍历元素和随机访问元素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e1EssHBe-1651212730848)(D:\note\Java高级特性\图片笔记\ArrayList.jpg)]

  • LinkedList采用链表存储方式,插入、删除元素时效率比较高
    1. 链表存储方式
    2. 插入、删除元素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQ1NXLQa-1651212730849)(D:\note\Java高级特性\图片笔记\LinkedList.jpg)]

ArrayList集合类

  • ArrayList
    1. 是List接口的一个具体实现类
    2. 实现了改变大小的数组
    3. 随机访问和遍历元素时,他提供更好的性能
  • 用到的方法
    1. add()
      • 返回Object类型
    2. size()
      • 和length属性作用是一样的
    3. get()
      • ? 返回的也是Object类型

ArrayList常用方法

方法名说明
boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
int size()返回列表中的元素个数
Object get(int index)返回值指定索引位置处的元素。去除的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o)判断列表中是否存在指定元素
boolean remove(Objeact o)从列表中删除元素
Object remove(int index)从列表中删除指定位置元素,起始索引位置从0开始

Collection接口常用通用方法

使用子接口或子类

Collection接口常用通用方法
add()向集合有顺序的添加元素
size()返回元素个数
contains()判断是否存在这个元素
remove()删除元素
clear()集合里的所有元素清空
isEmpty()判断集合是否为空
itcrator()获取遍历一个集合的迭代器
toArray()把一个集合转换成一个序列
转为数组 Object[] toArray()(toArray()返回Object[]的数组)

断点跟踪ArrayList

随机访问和遍历元素时,它提供更好的性能(插入时的断点过程跟踪)

LinkedList集合类

  • LinkedList类是List接口的一个具体实现类
  • LinkedList类用于创建链表数据结构
  • 插入或者删除元素时,它提供更好的性能

LinkedList独有的方法

方法名说明
void addFirst(Object o)在列表的首部添加元素
void addLast(Object 0)在列表的末尾添加元素
Object getFirst()返回列表中的第一个元素
Object getLast()返回列表中的最后一个元素
Object removeFirst()删除并返回列表中的第一个元素
Object removeLast()删除并返回列表中的最后一个元素

ArrayList可以用父类引用指向子类对象的形式

LinkedList不可以用父类引用指向子类对象的形式

这种写法只能调用父子类公用的方法,无法调用子类独有的方法

LinkedList和ArrayList异同

同为List实现类,元素有序、不唯一、长度可变ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比价高
共有Collection及List的通用方法LinkedList采用链表存储方式,插入、删除元素时效率比

Set接口

  • Set接口存储一组唯一,无序的对象

  • HashSet是Set接口常用的实现类

  • Set中存放对象的引用

  • Set接口采用对象的equals()方法比较两个对象是否相等

  • hashSet是Set接口常用的实现类

    HashSet

    • Set接口不存在get()方法,所以不能用get()方法来获取HashSet中的元素。

    增强型的for

for (Object obj:hashSet) {
    NewsTitle newsTitle = (NewsTitle) obj;
    System.out.println(newsTitle.getTitle()+newsTitle.getAuthor());
    //JavaAPI/demo03(原码)
}

Iterator遍历Set

Iterator(迭代器)原理

判断下一个有没有元素,如果有元素就把他取出来,如果没有就不会继续往下

//获取迭代器对象
Iterator itor = hashSet.iterator();
//判断是否存在下一个元素
while (itor.hasNext()){
    //返回要访问的下一个元素
    NewsTitle newsTitle = (NewsTitle) itor.next();
    System.out.println(newsTitle.getTitle()+newsTitle.getAuthor());
}
  • 迭代器Iterator实现对集合的遍历
  • 通过Collection 接口的iterator()方法获取Iterator
  • 结合代码对比两种遍历Set的方式

总结

  • Collection、List、Set、Map接口的联系和区别
  • ArrayList和LinkedList的异同之处及各目的的应用场合
  • 遍历集合的方法
    1. 有序集合:普通for遍历索引、增强型for、迭代器Iterator
    2. 无序集合:增强型for、迭代器Iterator

Collection接口存储一组不唯一,无序的对象

List接口存储一组不唯一,有序(插入顺序)的对象

Set接口存储一组唯一,无序的对象

Map

Map接口存储一组键值对象,提供key到value的映射

Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作

Map常用方法

put(Object key,Object value)向集合添加键值对,
get(Object key)通过key获取value,如果找不到则返回null
size()获取键值对的对数
containsKey(Object key)如果此映射包含指定键的映射,则返回 true
values()返回值的集合
entrySet()获取所有的key和value
containsKey(Object Key)如果此映射包含指定键的映射,则返回 true
remove(Object Key)删除由指定的键映射的“键-值对”
keySet()返回键的集合

遍历Map集合元素(三种方法)

  • 遍历key(Set:迭代器、增强型for),通过get(key)获取value
  • 遍历key-value对
    • map.Entryset()-Map.Entry
    • getKey()、getValue()
    • 注意数据类型转换

遍历Map 思路一:遍历key(key是set),通过key—>value

增强型for

    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");
        
    Set keys = countries.keySet();//获取到Map集合中所有的key
        for (Object obj:keys) {
            String key = (String) obj;//获取到Map中的每一个key
            String value =(String) countries.get(key);//根据Map中每一个key去获取对应的value
            System.out.println(key+"--"+value);
        }

迭代器Iterator遍历key的集合(Set类型)

    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");

    Iterator itor = keys.iterator();
        while (itor.hasNext()){
            String key = (String)itor.next();//获取到Map中每一个key
            String value =(String) countries.get(key);//根据Map中每一个key去获取对应的value
            System.out.println(key+"--"+value);

        }

遍历Map 思路二:获取Map中的所有键值对,然后再键值对中分别获取key和value

    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");
        
  Set set = countries.entrySet();//获取Map中所有的键值对
        //遍历键值对的集合,把每个键值对拿出来(每一个键值对都是(obj)--Map.Entry类型)
        for (Object obj:set) {
            Map.Entry me = (Map.Entry) obj;
            String key =(String)me.getKey();//获取键值对中的键
            String value =(String) me.getValue();//获取键值对中的值
            System.out.println(key+"--"+value);
        }

泛型

泛型 约束了集合框架添加元素的安全性,错误类型的元素添加,在编译时不通过

添加泛型之后再遍历的时候不用强制类型转换(添加泛型指定的那个类型,返回的就一定是这个类型)

除了指定集合中的元素类型外,泛型集合和之前学习的集合的用法完全一样

Collections工具类

Collections算法类

Java集合框架针对不同数据结构算法的实现都保存再工具类中

Collections类定义了一系列用于操作集合的静态方法

Collections于Collection的不同

Collection集合接口
Collections集合的操作类

Collections常用静态方法

reverse()反转元素顺序
binarySearch()查找
sort()排序
max()/min()查找最大\最小值

Collections自定义数据类型排序

第一步:该类要实现Comparable接口

第二布:重写compareTo()方法

Java集合框架总结

两种集合类型

  • Collection 存储不唯一无序的数据
    • List 不唯一,有序的
    • Set 唯一,无序的
  • Map 如何存储数据,如何遍历,如何使用泛型(重点)
    • 键值对的形式(key,value)
    • 常用的实现类是
      • HashMap
      • TreeMap

一种迭代器

  • Iterator 集合通用遍历

工具类

  • Collections 工具类
  • Arrays

实现一个类的对象之间比较大小

  • 该类要实现Comparable接口
  • 重写compareTo()方法
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:33:33  更:2022-05-01 15:36:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:54:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码