首页 > 编程语言 >JavaSE基础知识分享(七)

JavaSE基础知识分享(七)

时间:2024-08-15 21:39:27浏览次数:10  
标签:返回 映射 元素 基础知识 集合 返回值 JavaSE 分享 true

写在前面

前面讲的是面向对象中的常用类部分,下面让我们来看看java中集合这部分的内容!在本文的最后给大家发一个题目,便于复习Java面向对象部分的知识!

集合

数据结构

  • 栈和队列

  • 数组和链表


  • 哈希表


  • 本部分知识太多,就不一一列举了。
    了解更多

泛型

  • 泛型类
    格式:public class 类名<泛型类型1,…>
    注意:泛型类型必须是引用类型。

  • 泛型方法
    格式:public <泛型类型> 返回类型 方法名(泛型类型 参数)

  • 泛型接口
    格式:public interface 接口名<泛型类型1,…>

  • 泛型通配符 <?>

    • <?> 任意类型,若没有明确,就是 Object 及任意 Java 类。
    • <? extends E> 向下限定,E 及其子类。
    • <? super E> 向上限定,E 及其父类。

两大继承体系

Collection 接口

  • 成员方法

  • boolean add(E e)

    • 作用:将指定的元素 e 添加到集合中。如果集合中尚不存在该元素,成功添加返回 true;如果集合中已经存在该元素,则返回 false
    • 返回值true 如果元素成功添加,false 如果元素已存在。
  • boolean remove(Object o)

    • 作用:从集合中移除指定的元素 o。如果集合中存在该元素,移除成功返回 true;如果集合中不存在该元素,则返回 false
    • 返回值true 如果元素成功移除,false 如果元素不存在。
  • void clear()

    • 作用:移除集合中的所有元素,使集合变为空。
    • 返回值:无返回值。
  • boolean contains(Object o)

    • 作用:检查集合是否包含指定的元素 o。如果集合中存在该元素,则返回 true;否则返回 false
    • 返回值true 如果集合包含指定的元素;false 如果集合不包含该元素。
  • boolean isEmpty()

    • 作用:检查集合是否为空。如果集合中没有任何元素,则返回 true;否则返回 false
    • 返回值true 如果集合为空;false 如果集合包含元素。
  • int size()

    • 作用:返回集合中元素的数量。
    • 返回值:集合中元素的数量(一个整数)。
  • Object[] toArray()

    • 作用:返回包含集合中所有元素的数组。数组的类型为 Object[]
    • 返回值:包含集合中所有元素的数组。
  • <T> T[] toArray(T[] a)

    • 作用:返回包含集合中所有元素的数组。如果提供的数组 a 足够大,元素将被存储在该数组中;否则,创建一个新的数组来存储元素。
    • 返回值:包含集合中所有元素的数组。如果提供的数组 a 足够大,则返回 a;否则返回新创建的数组。
  • Iterator<E> iterator()

    • 作用:返回集合中元素的迭代器,可以通过迭代器遍历集合中的元素。
    • 返回值:集合中元素的 Iterator
  • boolean containsAll(Collection<?> c)

    • 作用:检查集合是否包含指定集合 c 中的所有元素。如果集合中包含 c 中的所有元素,则返回 true;否则返回 false
    • 返回值true 如果集合包含所有 c 中的元素;false 如果不包含。
  • boolean addAll(Collection<? extends E> c)

    • 作用:将指定集合 c 中的所有元素添加到当前集合中。如果当前集合由于添加而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • boolean removeAll(Collection<?> c)

    • 作用:从当前集合中移除指定集合 c 中的所有元素。如果当前集合由于移除而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • boolean retainAll(Collection<?> c)

    • 作用:保留当前集合中与指定集合 c 中的元素相同的元素,移除所有其他元素。如果当前集合由于移除而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • 子接口

    • List 接口

      • 特点:元素有序且可以重复,有索引下标。
      • 子类
        • ArrayList

          • 底层数据结构:数组
          • 优点:查询快
          • 缺点:增删慢,线程不安全
          • 线程安全实现:使用泛型和 synchronized 关键字修饰类。
        • Vector

          • 底层数据结构:数组
          • 优点:线程安全
          • 缺点:效率低
        • LinkedList

          • 底层数据结构:双链表
          • 优点:增删快
          • 缺点:查询慢,线程不安全
    • Set 接口

      • 特点:元素唯一且无序。
      • 子类
        • HashSet

          • 底层数据结构:哈希表
          • 元素唯一性:通过 hashCode()equals() 实现。
        • LinkedHashSet

          • 底层数据结构:哈希表和双链表
          • 优点:哈希表保证元素唯一性,双链表保证元素有序。
        • TreeSet

          • 底层数据结构:红黑树
          • 排序方式:
            • 自然排序:元素类实现 Comparable<元素类> 接口并重写 compareTo 方法。
            • 比较器排序:使用实现了 Comparator 接口且重写 compare 方法的对象进行排序。
  • 遍历方式

    • 方式一:使用迭代器,利用 hasNext()next() 方法。
    • 方式二:使用 for 循环,利用集合的 size() 方法和 get(索引值)
    • 方式三:将集合转成数组,通过数组的 length 属性进行遍历。

Map 接口

  • 成员方法

  • V put(K key, V value)

    • 作用:将指定的键 key 和对应的值 value 存入映射中。如果映射中已经存在该键,则用新值替换旧值,并返回旧值;如果映射中没有该键,则添加新键值对并返回 null
    • 返回值:旧值(如果键已存在),否则 null
  • V remove(Object key)

    • 作用:从映射中移除指定的键 key 及其对应的值。如果键存在,则将其对应的值移除并返回;如果键不存在,则返回 null
    • 返回值:被移除的值(如果键存在),否则 null
  • void clear()

    • 作用:移除映射中的所有键值对,使映射变为空。
    • 返回值:无返回值。
  • boolean containsKey(Object key)

    • 作用:检查映射是否包含指定的键 key。如果映射中存在该键,则返回 true;否则返回 false
    • 返回值true 如果映射包含指定的键;false 如果映射不包含该键。
  • boolean containsValue(Object value)

    • 作用:检查映射是否包含指定的值 value。如果映射中存在该值,则返回 true;否则返回 false
    • 返回值true 如果映射包含指定的值;false 如果映射不包含该值。
  • boolean isEmpty()

    • 作用:检查映射是否为空。如果映射中没有任何键值对,则返回 true;否则返回 false
    • 返回值true 如果映射为空;false 如果映射包含键值对。
  • int size()

    • 作用:返回映射中键值对的数量。
    • 返回值:映射中键值对的数量(一个整数)。
  • V get(Object key)

    • 作用:获取指定键 key 对应的值。如果映射中存在该键,则返回其对应的值;如果键不存在,则返回 null
    • 返回值:指定键对应的值(如果键存在),否则 null
  • Set<K> keySet()

    • 作用:返回映射中所有键的集合(Set)。可以通过这个集合遍历所有的键。
    • 返回值:包含映射中所有键的 Set
  • Collection<V> values()

    • 作用:返回映射中所有值的集合(Collection)。可以通过这个集合遍历所有的值。
    • 返回值:包含映射中所有值的 Collection
  • Set<Map.Entry<K, V>> entrySet()

    • 作用:返回映射中所有键值对的集合(Set)。每个键值对都表示为 Map.Entry 对象,方便进行遍历和操作。
    • 返回值:包含映射中所有键值对的 Set。每个键值对是 Map.Entry<K, V> 对象。
  • 遍历方式

    • 方式一:获取所有键的集合,遍历键集合,根据键获取值。
    • 方式二:获取所有键值对对象的集合,遍历集合,根据键值对对象获取键和值。
  • 子类

    • HashMap

      • 底层数据结构:哈希表
    • LinkedHashMap

      • 底层数据结构:哈希表和链表
    • TreeMap

      • 底层数据结构:红黑树

面向对象的复习题

1.一个类的4.0写法:

创建一个`Person`类,包含`name`、`age`和`gender`三个私有字段。编写一个构造方法,用于初始化这些字段,外界要能读写每个字段,并提供一个公共的`toString`方法,用于打印`Person`对象的详细信息。

2.封装与访问控制:

修改`Person`类,使其`age`字段只能被增加,不能被减少。为此,你需要提供一个公共的`increaseAge`方法,并在该方法中增加`age`字段的值。在`Person`类中添加一个私有方法,用于验证`age`字段的值是否合法(例如,年龄不能为负数)。在构造方法和`increaseAge`方法中调用该方法以确保对象状态的有效性。

3.继承:

创建一个`Student`类,继承自`Person`类。在`Student`类中添加一个`studentId`字段和一个`getStudentId`方法。在`Student`类中重写`toString`方法,使其同时打印`Person`类的字段和`studentId`字段。

4.多态:

在`Person`类中添加一个名为`speak`的抽象方法,该方法返回一个字符串,表示人物的说话内容。创建`Teacher`和`Student`两个类,分别继承自`Person`类,并实现`speak`方法。在`Teacher`类中,`speak`方法返回一条教育性的消息;在`Student`类中,`speak`方法返回一条学习的消息。编写一个`School`类,其中包含一个`Person`类型的数组。在`School`类中添加一个方法,该方法接收一个索引值,并调用数组中对应索引位置对象的`speak`方法,打印出说话内容。在`Person`类中写一个方法,表示该老师在备课。

5.接口:

实现一个抽烟接口,给`Teacher`类加一个抽烟功能,写一个`smoking`方法内容是xxx正在吸烟,无返回值,并在4的基础上实现该接口来调用该方法。

效果展示:



标签:返回,映射,元素,基础知识,集合,返回值,JavaSE,分享,true
From: https://www.cnblogs.com/cjybigdatablog/p/18361802

相关文章

  • 工业采集网关的技术特点及应用场景分享-天拓四方
    随着工业4.0时代的到来,数字化、网络化和智能化成为了现代工业发展的重要特征。在这样的背景下,工业采集网关凭借其强大的数据采集、传输与处理功能,成为了工业自动化系统中的关键组件。本文将深入解析工业采集网关的技术特点、应用场景及其在实际操作中的重要性。一、技术特点......
  • 【会计基础知识】固定资产业务会计分录
    新增固定资产:借:固定资产贷:银行存款/库存现金固定资产减少:借:固定资产清理    累计折旧贷:固定资产固定资产原值增加/减少:借:固定资产/借:资产减值损失贷:资本公积/贷:固定资产减值准备固定资产折旧:借:管理费用/制造费用科目下的折旧费用贷:累计折旧固定资产清理:借:固定资产清理......
  • 国内外AI大语言模型推荐分享 除了Chatgpt 你会选择哪个模型?
    当前AI技术飞速发展,Ai已经成为许多人日常工作和生活中不可或缺的工具,特别是以大语言模型为首的人工智能,它能够与我们进行自然语言对话,支持多种应用场景,如技术问答、代码生成、内容创作等,而且适用于各种群体和场景。现在国内外都有不少出色的大语言模型,这些模型在自然语言......
  • 手机回合制策略游戏推荐:《文明6》手机版游戏分享
    在《文明6》中,玩家将扮演不同的领袖,引导自己的文明从石器时代发展到信息时代。游戏的目标是达成五种胜利条件之一:科学、文化、统治、宗教和分数胜利。每种胜利条件都有其独特的达成方式,例如科学胜利要求玩家实现登月并建立活性殖民地,而文化胜利则是通过旅游业来实现。《文......
  • CISP可以自己报考吗?过来人经验分享:CISP报考的5个秘诀!
    CISP不能自己报考,只能通过国测中心授权机构报考,那么在CISP报考中就有很多只有考过的人才知道的秘诀了,作为过来人,给大家总结了5个关于CISP报考的秘诀,希望大家能少走弯路!一、CISP报考,工作经验别较真CISP报名条件中有工作经验年限的要求,很多人会纠结自己的年限是否达到要求,其实......
  • 快速符合ISO26262产品认证——动力域L2监控方案精华分享
    一、VCU应用层监控方案的ISO26262背景    “软件定义汽车”趋势下,更多汽车软件问题与消费者生命安全密切相关。而汽车行业ISO26262《道路车辆功能安全》是一个国际安全标准,对安装在量产道路车辆上的电气、电子系统的功能安全进行了约束和规定,避免对人身的伤害。  ......
  • 游泳耳机哪个牌子好?四大热门游泳耳机真实测评分享!
    游泳耳机的选择对游泳爱好者来说至关重要,不仅能提升水下运动的趣味性,还能带来个性化的健身体验。然而,市场上的游泳耳机良莠不齐,许多声称可防水且音质优良的产品,实际上并没有经过严格的技术测试和参数调校,导致用户在水下使用时遇到各种问题,甚至高达九成的用户反馈存在问题!(上......
  • 游泳耳机哪个牌子最好?四大高销量游泳耳机全维度测评分享!
    在各大电商平台和社交媒体上,我们经常可以看到关于游泳耳机的讨论。有些用户称赞它们的防水性能和音质,而另一些用户则抱怨它们容易损坏或音质不佳。事实上,市场上充斥着大量质量参差不齐的游泳耳机,它们中的许多都声称具有卓越的防水和音质,但实际效果却大相径庭。作为一名拥有多年......
  • Java反序列化(一)——基础知识
    前言·攻击JavaWeb应用-[JavaWeb安全]Java类加载机制-知乎(zhihu.com)java反序列化基础-CSDN博客Java序列化-二进制格式详解_java序列化二进制特征-CSDN博客1类加载机制1.1概述    Java程序在运行钱需要先编译成.class文件,这个文件的内容被称为字节......
  • 视频号分销系统搭建教程,源码分享+系统部署上线指南
    目录一、视频号分销系统是什么?二、怎么搭建视频号分销系统?(一)系统设计与开发(二)测试与优化(三)部署与上线三、部分代码分享一、视频号分销系统是什么?二、怎么搭建视频号分销系统?搭建视频号分销系统是一个涉及多个技术层面的复杂过程,以下是从技术层面出发的详细步骤和......