Java语言程序设计——篇十一(3)

news2024/9/24 13:25:45

在这里插入图片描述
在这里插入图片描述

       🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

集合——Set

  • Set接口及实现类
    • HashSet类
      • 实战演练
    • 用Set对象实现集合操作
    • TreeSet类
      • 实战演练
      • 实战演练
    • 对象顺序
      • 实战演练
        • 综合实例

Set接口及实现类

  • Set接口是Collection的子接口,其中不允许有重复的元素。
  • Set接口没有定义新的方法,只包含从Collection接口继承的方法。
  • Set接口的常用实现类有:HashSet类、TreeSet类。

在这里插入图片描述

HashSet类

  • HashSet类用散列方法存储元素,具有最好的存取性能,但元素没有顺序。
  • HashSet类的构造方法有:

HashSet(): 初始容量是16,默认装填因子是0.75。
HashSet(Collection c)
HashSet(int initialCapacity)
HashSet(int initialCapacity, float loadFactor)

实战演练

例:HashSetDemo.java

import java.util.*;

public class HashSetDemo {
     public static void main(String[] args) {
Set<String> words = new HashSet<>();
words.add("one");
words.add("two");
words.add("three");
words.add("one"); //不能将重复元素添加到集合中
for(String s:words)
                System.out.print(s+" ");
      }
}

在这里插入图片描述

用Set对象实现集合操作

  • 使用Set对象的批量操作方法,可以实现标准集合代数运算。
  • 假设s1和s2是Set对象,下面的操作可实现相关的集合运算。

s1.addAll(s2):实现集合s1与s2的并运算。
s1.retainAll(s2):实现集合s1与s2的交运算。
s1.removeAll(s2):实现集合s1与s2的差运算。
s1.containAll(s2):如果s2是s1的子集,该方法返回true。

TreeSet类

  • TreeSet实现一种树集合, 它使用红-黑树算法为元素排序,因此集合中的元素是有序存放的。
  • 添加到TreeSet中的元素必须是可比较的,即元素的类必须实现Comparable接口。
  • 构造方法如下:

TreeSet()
TreeSet(Collection c)
TreeSet(Comparator c)

实战演练

例:TreeSetDemo.java

import java.util.*;
public class TreeSetDemo{
    public static void main(String[] args){
Set<String> ts = new TreeSet<>(); 
String[] s = new String[]{"one","two","three","four"};
for (int i = 0; i < s.length; i++){
          ts.add(s[i]);    // TreeSet中的元素将自动排序
       }
       System.out.println(ts);
    }
}

在这里插入图片描述

  • TreeSet类实现了SortedSet接口中的常用方法:
E first(): 返回有序集合中的第一个元素。
E last(): 返回有序集合中的最后一个元素。
SortedSet<E> subset(E from, E to): 返回从元素from到to(不包含)结束的子有序集合。
SortedSet<E> headset(E to): 返回小于元素to的子有序集合。
SortedSet<E> tailset(E from): 返回大于等于元素from的子有序集合。
Comparator<? super E> comparator(): 返回与该有序集合相关的比较器,若集合采用自然顺序,返回null

实战演练

例:SortedSetDemo.java

import java.util.*;
public class SortedSetDemo{
public static void main(String[] args) {    
SortedSet<String> set = new TreeSet<>();
set.add("one");
set.add("two");
set.add("three");
    System.out.println(set);  //[one, three, two]
    System.out.println(set.first());
    System.out.println(set.last());
    System.out.println(set.subSet("one", "three"));
    System.out.println(set.headSet("two"));
    System.out.println(set.tailSet("three"));
    System.out.println(set.comparator());
}
}

在这里插入图片描述

对象顺序

  • 所谓自然顺序(natural order),是指集合对象实现了Comparable接口的compareTo()方法,对象则根据该方法排序。
  • 如果需要指定新的比较规则,可以定义一个类实现Comparator接口,然后为集合提供一个新的比较器。

实战演练

例: 使用TreeSet类实现字符串的正序及逆序排序。

import java.util.*;
public class DescSortDemo{
  public static void main(String[] args){
     String[] s = {"China", "England","France","America","Russia",};
     Set<String> ts = new TreeSet<>();
     for(int i = 0; i < s.length; i ++)
         ts.add(s[i]);
     System.out.println(ts);
     //使用Lambda表达式实现字符串倒序
     ts = new TreeSet<>((String s1, String s2) -> s2.compareTo(s1)); 
     // 将数组s中的元素添加到TreeSet对象中
     for(int i = 0; i < s.length; i ++)
          ts.add(s[i]);
     System.out.println(ts);
  }
}

在这里插入图片描述

综合实例

在Java中,Set是一个不包含重复元素的集合。Set接口主要由HashSet、LinkedHashSet和TreeSet等类实现,每个实现类都有其特定的用途和特性。下面,我将给出一个使用HashSet的简单例子,因为HashSet是Set接口的一个常用实现,它基于哈希表实现,不保证集合的迭代顺序。

import java.util.HashSet;  
import java.util.Iterator;  
import java.util.Set;  
  
public class SetExample {  
    public static void main(String[] args) {  
        // 创建一个HashSet对象  
        Set<String> mySet = new HashSet<>();  
  
        // 向HashSet中添加元素  
        mySet.add("Apple");  
        mySet.add("Banana");  
        mySet.add("Cherry");  
        mySet.add("Date"); // 注意:即使再添加一次"Apple",它也不会被重复添加  
        mySet.add("Apple");  
  
        // 遍历HashSet  
        System.out.println("Set contains the following elements:");  
        Iterator<String> iterator = mySet.iterator();  
        while(iterator.hasNext()) {  
            String element = iterator.next();  
            System.out.println(element);  
        }  
  
        // 检查Set是否包含某个元素  
        if(mySet.contains("Banana")) {  
            System.out.println("The set contains Banana.");  
        }  
  
        // Set的大小  
        System.out.println("Size of the set: " + mySet.size());  
  
        // 移除元素  
        mySet.remove("Cherry");  
        System.out.println("After removing Cherry, the set contains:");  
        for(String str : mySet) { // 使用增强的for循环遍历Set  
            System.out.println(str);  
        }  
  
        // 清空Set  
        mySet.clear();  
        System.out.println("After clearing the set, is it empty? " + mySet.isEmpty());  
    }  
}

这段代码首先创建了一个HashSet<String>的实例,并向其中添加了一些字符串元素(包括一个重复的元素,但HashSet不会存储重复元素)。然后,它使用Iterator遍历了集合中的所有元素,并打印出来。接着,它检查集合是否包含某个特定元素(在这个例子中是"Banana"),并输出了集合的大小。之后,它移除了集合中的一个元素(“Cherry”),并再次遍历集合以显示更改后的内容。最后,它清空了集合,并检查集合是否为空。
博主用心写,读者点关注,互动传真情,知识不迷路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1976208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaFX布局-ButtonBar

JavaFX布局-ButtonBar 常用属性buttonOrderpaddingbuttonMinWidth 实现方式Java实现fxml实现 一个特殊的容器&#xff0c;用于创建一组按钮&#xff0c;水平排列按钮太多&#xff0c;会被遮住&#xff0c;不会自动产生滚动条 常用属性 buttonOrder 预制顺序 buttonBar.setBut…

别再盲目推广了!Xinstall助你开启App线下推广新篇章

在这个数字化飞速发展的时代&#xff0c;App已经成为我们生活中不可或缺的一部分。然而&#xff0c;App市场的竞争也日益激烈&#xff0c;如何让你的App在众多竞争者中脱颖而出&#xff0c;成为每个推广者必须面对的问题。今天&#xff0c;就让我们一起探讨一下App线下推广的痛…

【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分

【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分 本文承接文章【2024】Datawhale AI夏令营 Task3笔记——Baseline2部分代码解读及初步上分思路&#xff0c;对其中vllm加速方式进行修改&#xff0c;推理速度获得了极大提升。另外&#xff0c;…

【JAVA入门】Day17 - GUI

【JAVA入门】Day17 - GUI 文章目录 【JAVA入门】Day17 - GUI一、组件二、事件 GUI 即图形化界面。 一、组件 一个 Java 的图形化界面项目主要用到了下面几种组件。 Java 中最外层的窗体叫做 JFrame。Java 中最上层的菜单叫做 JMenuBar。Java 中管理文字和图片的容器叫做 JLab…

快速体验LLaMA3模型微调(超算互联网平台国产异构加速卡DCU)

序言 本文以 LLaMA-Factory 为例&#xff0c;在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE&#xff0c;对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。 超算互联网平台 异构加速卡AI 显存64GB PCIE 一、参考资料 github仓库代码&#xff1a;LLaMA-Fac…

C#中的Winform基础

program 每个Windows应用程序都会有一个Program类——程序入口点 [STAThread] ----指示应用程序的COM线程模型是单线程单元&#xff08;如果无此特性&#xff0c;无法工作&#xff09; static voidMain() —— 入口 System.Windows.Forms.Application类提供一系列静态方法和…

【C++】一堆数组案例 元素逆置

所谓元素逆置就是把一堆数组的元素顺序反过来 例如一堆数组的为 1&#xff0c;2&#xff0c;3&#xff0c;4 那么它的逆置为 4&#xff0c;3&#xff0c;2&#xff0c;1 逆置过程运用赋值存储的思想&#xff0c;先把第一个数组存贮到一个变量中&#xff0c;然后把末尾数组…

开源LivePortrait,快速实现表情包自定义

最近可灵AI很火&#xff0c;看到网上生成的效果也很赞啊&#xff0c;之前发现快手可灵开源了LivePortrait&#xff0c;今天去玩了一下&#xff0c;很有意思。 比如下图官方展示效果&#xff1a; 这些图片开始自带表情了&#xff0c;主要就是通过LivePortrait来实现。 LivePor…

浏览器用户文件夹详解 - Top Sites(七)

1. TopSites简介 1.1 什么是TopSites文件&#xff1f; TopSites文件是Chromium浏览器中用于存储用户访问频率最高的网站信息的一个重要文件。每当用户在浏览器中访问网站时&#xff0c;这些信息都会被记录在TopSites文件中。通过这些记录&#xff0c;浏览器可以为用户提供个性…

校园抢课助手【7】-抢课接口限流

在上一节中&#xff0c;该接口已经接受过风控的处理&#xff0c;过滤掉了机器人脚本请求&#xff0c;剩下都是人为的下单请求。为了防止用户短时间内高频率点击抢课链接&#xff0c;海量请求造成服务器过载&#xff0c;这里使用接口限流算法。 先介绍下几种常用的接口限流策略…

脚拉脚模型笔记

脚拉脚模型 ⌈♪⌋例题&#xff1a; 辅助线&#xff08;中点&#xff09;做法&#xff1a; 倍长中线Rt △ △ △ 斜边中线等腰 △ △ △ 三线合一中位线 需要&#xff1a;两个等腰三角形&#xff0c;顶角互补 共__底点__ 底角需要连接 解&#xff1a; ∵ D Q 1 / 2 A B O…

中国人工智能最好50所大学排名-2024年最强学校名单

人工智能最强的学校包含&#xff1a;清华大学、上海交通大学、南京大学、西安电子科技大学、电子科技大学、中国科学技术大学、哈尔滨工业大学、华中科技大学、东南大学、浙江大学等学校。这些都是人工智能专业排名全国前十的名牌大学。 圆梦小灯塔将在下文继续为2024年高考生…

鸿蒙应用开发 DevEcoStudio 汉化

步骤 DevEcoStudio 是默认支持中文的&#xff0c;只是默认是关闭的&#xff0c;需要在已安装的插件中搜索 Chinese 关键字&#xff0c;然后启用并重启即可&#xff08;注意&#xff1a;是在已安装的插件中搜索&#xff09;。 1. 2. 3. 重启就行

滚珠花键:新能源汽车传动系统的核心动力传递者

在日常生活中&#xff0c;汽车已经成为了必不可少的交通工具&#xff0c;尤其是新能源汽车。而滚珠花键作为传动系统中的重要组成部分&#xff0c;在传动系统方面的作用不容忽视。 随着科技的不断发展&#xff0c;汽车行业也在不断进步&#xff0c;滚珠花键作为高精度的机械传动…

PE安装win11原版系统“无法创建新的分区,也找不到现有的分区”和“windows无法对计算机进行启动到下一个安装阶段”的解决办法

问题1 针对“无法创建新的分区&#xff0c;也找不到现有的分区”&#xff1a; 解决办法&#xff1a; 用Diskgenius等分区工具删除整个分区&#xff0c;不要在分区工具里新建分区&#xff0c;而是在安装系统选择安装磁盘的时候&#xff0c;直接选择这个磁盘&#xff0c;从而完成…

五. TensorRT API的基本使用-build-model-from-scratch

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 model.cpp 3. 案例3.1 sample_conv3.2 sample_permute3.3 sample_reshape3.4 sample_batchNorm3.5 sample_cbr 4. 补充说明总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。…

《学会 SpringMVC 系列 · 写入拦截器 ResponseBodyAdvice》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

3.4数组和特殊矩阵

3.4.1数组的定义 数组是由n个相同类型的数据元素构成的有序序列 数组是线性表的推广,一个数组可以视为一个线性表 数组一旦被定义,其长度不会再改变,所以数组只会有存取元素和修改元素的操作 3.4.2数组的存储结构 多维数组 有两种映射方法:按行优先和按列优先 按行优先 …

2024 年最值得阅读的 10 个外国技术网站

从网络上数以千计的博客中挑选出最好的技术网站&#xff0c;并根据相关性、权威性、社交媒体关注者和新鲜度进行排名。 1. TechCrunch TechCrunch 是一家领先的科技媒体&#xff0c;致力于深入分析初创公司、评论新的互联网产品和发布科技新闻。该网站是科技专业人士和爱好者…

【传知代码】实体关系抽取(论文复现)

当谈论信息提取领域的最前沿时&#xff0c;实体关系抽取无疑是其中一颗耀眼的明星。从大数据时代的信息海洋中提炼出有意义的关系&#xff0c;不仅是科技进步的体现&#xff0c;更是人类对知识管理和智能决策迫切需求的响应。本文将探索实体关系抽取的核心技术、应用场景及其在…