首页 > 编程语言 >JAVA高级编程之集合框架和泛型(超详细)

JAVA高级编程之集合框架和泛型(超详细)

时间:2024-09-01 13:53:08浏览次数:7  
标签:编程 JAVA Object 接口 集合 Set key 泛型 元素

Java集合框架包含的内容

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

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

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

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

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

List接口的实现类

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

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

ArrayList集合类

确定存储方式

  • ArrayList类是List接口的一个具体实现类

  • ArrayList对象实现了可变大小的数组

  • 随机访问和遍历元素时,它提供更好的性能

确定存储对象

  • 创建类型:新闻标题

  • 包含属性: ID、名称、创建者

具体实现

……

ArrayList常用方法

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

Collection接口常用通用方法还有:clear()、isEmpty()、iterator()、toArray()

LinkedList集合类

确定存储方式

  • LinkedList类是List接口的一个具体实现类

  • LinkedList 类用于创建链表数据结构

  • 插入或者删除元素时,它提供更好的性能

具体实现

……

LinkedList常用方法

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

Set接口

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

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

  • Set中存放对象的引用

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

HashSet是Set接口常用的实现类

Set接口不存在get()方法

如何遍历Set集合

方法1:通过迭代器Iterator实现遍历

  • 获取Iterator :Collection 接口的iterator()方法

Iterator的方法

  • boolean hasNext(): 判断是否存在另一个可访问的元素

  • Object next(): 返回要访问的下一个元素

 
Set<Integer> set = new HashSet<Integer>();
              ......
 Iterator iterator = set.iterator();
         while (iterator.hasNext()){
             System.out.println(iterator.next());
         }

方法2:增强型for循环

 Set<Integer> set = new HashSet<Integer>();
              ......
 for (int value:set){
             System.out.println(value);
         }

Map接口

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

  • 最常用的实现类是HashMap

Map接口常用方法

方法名说明
Object put(Object key, Object val)以“键-值”对的方式进行存储
Object get(Object key)根据键返回相关联的值,如果不存在指定的键,返回null
Object remove(Object key)删除由指定的键映射的“键-值对”
int size()返回元素个数
Set keySet()返回键的集合
Collection values()返回值的集合
boolean containsKey(Object key)如果存在由指定的键映射的“键-值对”,返回true

遍历Map集合

方法1:通过迭代器Iterator实现遍历

 Iterator iterator = map.keySet().iterator();
         while (iterator.hasNext()){
             int key = (int)iterator.next();
             String value = map.get(key);
             System.out.println(key+value);
         }

方法2:keySet增强for循环

 for (int key:map.keySet()){
             String value = map.get(key);
             System.out.println(key+value);
         }

方法3:EntrySet键值对增强for循环

 for (Map.Entry<Integer ,String> entry:map.entrySet()){
             int key = entry.getKey();
             String value = entry.getValue();
             System.out.println(key+value);
         }

泛型集合

泛型

将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性

  • 本质是参数化类型

泛型集合

  • 泛型集合可以约束集合内的元素类型

  • 典型泛型集合ArrayList<E>、HashMap<K,V>(<E><K,V>表示该泛型集合中的元素类型泛型集合中的数据不再转换为Object)

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

Collections算法类

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

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

Collections和Collection不同,前者是集合的操作类,后者是集合接口

Collections提供的常用静态方法

  • sort():排序

  • max()\min():查找最大\最小值

Collections排序

  • Collections类可以对集合进行排序、查找和替换操作

  • 实现一个类的对象之间比较大小,该类要实现Comparable接口,重写compareTo()方法

标签:编程,JAVA,Object,接口,集合,Set,key,泛型,元素
From: https://blog.csdn.net/sksnbdkdisbsnskd/article/details/141603869

相关文章

  • Java-数据结构-ArrayList-练习 ψ(*`ー´)ψ
    目录:一、练习一(删除str1中str2出现的元素):二、练习二(杨辉三角):三、练习三(简单的洗牌算法):总结:一、练习一(删除str1中str2出现的元素):我们先来看看这个题的条件是什么和如何去做:我们来看代码是什么样的:publicstaticvoidmain(String[]args){//练习1......
  • Java并发编程面试必备:如何创建线程池、线程池拒绝策略
    一、线程池1.线程池使用1.1如何配置线程池大小如何配置线程池大小要看业务系统执行的任务更多的是计算密集型任务,还是I/O密集型任务。大家可以从这两个方面来回答面试官。(1)如果是计算密集型任务,通常情况下,CPU个数为N,设置N+1个线程数量能够实现最优的资源利用率。因为N......
  • 基于Java+SpringBoot+Mysql在线众筹系统功能设计与实现一
    一、前言介绍:1.1项目摘要随着互联网的普及和人们消费观念的转变,众筹作为一种创新的融资方式,逐渐受到社会各界的关注和青睐。它打破了传统融资模式的限制,为初创企业、艺术家、公益项目等提供了更为灵活和便捷的融资渠道。因此,开发众筹系统旨在满足这一市场需求,促进创新项......
  • JavaScript程序结构
    程序结构有三种:选择结构、循环结构 、顺序结构一、选择结构1、简介根据条件进行判断,从而执行不同的操作,称为选择结构(分支结构),其实就是条件判断选择结构的类型:if、switch2、if结构分为:单分支结构、二分支结构、多分支结构、嵌套if结构 语法:if(条件1){代码块1}e......
  • Java 性能优化: 代码层面的调优策略
    Java性能优化:代码层面的调优策略大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Java性能优化是确保应用高效运行的关键环节。代码层面的调优可以显著提高程序的执行效率和响应速度。以下是一些代码层面的调优策略。避免冗余对象创建无意义的对象创建......
  • 探索Java的String魔法:揭秘“+”操作符的实现
    探索Java的String魔法:揭秘“+”操作符的实现在Java的世界里,String是一个无处不在的数据类型,它用于存储和操作文本数据。String的“+”操作符是连接字符串的常用方式,但你是否曾想过,这个看似简单的操作符背后隐藏着怎样的魔法?本文将深入探讨Java中String的“+”操作符是如何......
  • C++面向对象编程(OOP)教程
    C++面向对象编程(OOP)教程在C++中,面向对象编程(OOP)是一种编程范式,它基于“对象”的概念来设计软件。OOP强调将数据(属性)和操作这些数据的方法(行为)封装在一起,形成对象。这种封装提高了代码的模块化、可重用性和可维护性。C++通过类(Class)、对象(Object)、继承(Inheritance)、封装(Encapsu......
  • Java语言 数组定义与赋值 类型总结
    总结1.定义:数据类型[]数组名;2. 赋值(长度): 数组名=new数据类型[数组的长度];3.数据类型[]数组名=new数据类型[数组的长度]4.赋值(初始化)(第四点详细的看下面具体分析)   数据类型[]数组名=new数据类型[数组的长度]{元素1,元素2......}     ......
  • 探索函数式编程:纯函数 | 高阶函数 | 函数柯里化 | 组合函数
    函数式编程概述定义函数式编程(FP:Functionalprogramming)是一种范式,强调使用函数来构建程序,并且避免使用状态改变和可变数据(避免函数的执行存在副作用)→范式,用函数来"组合"以及"处理数据"(将运算过程抽象成函数)复用特点函数是第一等公民:在函数式编程语言中,函数......
  • Java 线程实现暂停、中止
    需求:用户可以开启任务,暂停任务和中止任务。用户开启任务后,可以随时暂停或者中止。暂停后又可以回到原进度继续运行。这里写目录标题demo版-使用废弃的stop、suspend、resume实现为什么废弃了?不用stop,如何销毁线程呢?正式版延迟版:wait和notify、join和interrupt、LockSu......