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

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

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

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

集合——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.rhkb.cn/news/390723.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始

目录 一、电路的基本原理&#xff1a;电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…

C# Unity 面向对象补全计划 之 单例模式

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 了解我的专栏C#面向对象与进阶:http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于类的那篇文章即…

jupyter支持跨机器远程访问

1. 远程访问场景 本地往往缺少GPU设备&#xff0c;为了让我们的代码能在有GPU设备的机器上运行&#xff0c;就需要在远程机器上启动jupyter notebook, 这意味着我们要在本地机器的浏览器上访问远程机器上的jupyter notebook。但是直接按ip访问会报如下错误&#xff1a; 因为ju…

ctfshow-web入门-sql注入(web176-web180)

目录 1、web176 2、web177 3、web178 4、web179 5、web180 1、web176 1 order by 4-- 闭合后简单判断了下字段数是 3 测试联合查询注入&#xff0c;存在关键字的过滤&#xff0c;包括 select 和 union &#xff08;后面经过测试实际只过滤了 select&#xff09; 大小写绕…

Star-CCM+负体积网格检查与出现原因

要使网格可用于有限体积计算&#xff0c;每个网格单元必须具有正体积&#xff0c;否则初始化过程将失败&#xff0c;且模拟计算无法运行。 负体积网格单元可能会以多种不同的方式出现&#xff0c;但必须修复或从网格中移除&#xff0c;才能继续执行任何后续操作。 要检查体网…

力扣hot100-二叉树

文章目录 概要二叉树的基本概念常见的二叉树类型常用的二叉树遍历二叉树的常用技巧 题目&#xff1a;二叉树的中序遍历方法1--递归遍历方法2--使用栈 概要 二叉树&#xff08;Binary Tree&#xff09;是一种树形数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;…

docker安装与container基本使用

安装 Homebrew 的 Cask 已经支持 Docker for Mac, mac用户狂喜 brew install --cask --appdir/Applications docker其他入门用法可参考 Docker Hello World- 菜鸟教程 或网上自行搜索博客学习。本文主要记录我运行go-zero-mall用到的一些注意点。当然&#xff0c;gonivinck项…

本地项目提交到Gitee

在项目目录 右键 git bash here 可以在黑屏输入命令 也可以在项目里面 命令都是一样的 要排除哪些 git add . 添加所有文件 git commit -m "Initial commit" 提交到本地 git remote add origin https://gitee.com/xxxx/xxxx.git 添加远程仓库 …

【多线程】线程的五种创建方法

文章目录 线程在 Java 代码中编写多线程程序Thread 标准库 创建线程的写法1 . 继承 Thread 类代码回调函数休眠操作&#xff1a;sleep()抢占式执行观察线程jconsoleIDEA 内置调试器 2 . 实现 Runnable 接口代码 3. 匿名内部类创建 Thread ⼦类对象代码匿名内部类 4.匿名内部类创…

PCB设计经验——布线原则

1.连线精简——避免直角布线 导线也应看作一种元器件&#xff0c;有自己的电阻&#xff0c;电感&#xff0c;电容 PCB走线在直角转弯的地方&#xff0c;信号前后部分相互影响&#xff0c;导致分布电容增加&#xff0c;对信号上升沿和下降沿有延缓影响。从阻抗的角度来说&#…

海康笔试题

1. 2. 块设备&#xff1a;磁盘设备驱动、SD设备驱动 字符设备&#xff1a;终端设备驱动 网络设备&#xff1a;网络设备驱动 &#xff08;1&#xff09;linux操作系统驱动程序分为三大类&#xff1a;字符设备驱动、快设备驱动和网络设备驱动 &#xff08;2&#xff09;字符设…

渗透测试--DHCP饿死实验

实验拓扑 实验步骤 Router Router(config)#int f0/0 Router(config-if)#ip address 192.168.100.254 255.255.255.0 Router(config-if)#no shutdown Router(config-if)#exitRouter(config)#ip dhcp pool NAME Router(dhcp-config)#network 192.168.100.0 255.255.255.0 Route…

过期知识:thinkphp5 使用migrate给现有的数据表新增表字段

个人开发网站记录, 这个文章主要是个以后健忘的我看的. 我在搞我的画笔审核 , 发现数据表的画笔数据在审核驳回的时候还是软删除好一些, 免得用户找不到之前上传的画笔数据, 后期也可以考虑重新显示给用户,让用户可以修改画笔信息重新提交审核. 这个时候想起了…

脚拉脚模型笔记

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

【Qt】QDial和QSlider

QDial QDial类用于创建一个旋转式的圆形控件&#xff0c;通过鼠标点击旋转、方向键或者pageUp和pageDown调整一个值。常用在需要进行连续调整的场景&#xff0c;比如音量控制、亮度控制、透明度调节等 常见属性 属性说明value持有的值minimum持有值所能到达的最小值maximum持有…

【C语言】C语言期末突击/考研--函数

目录 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 1.2.函数的分类与调用 二、函数的递归调用 三、局部变量与全局变量 3.1.全局变量解析形参实参解析 3.2.局部变量与全局变量 四、练习题及解析 一、函数的声明与定义-嵌套调用 1.1.函数的声明与定义 函数间的…

操作系统原理:程序、进程、线程的概念

文章目录 程序、进程、线程的概念程序&#xff08;Program&#xff09;进程&#xff08;Process&#xff09;线程&#xff08;Thread&#xff09;关系总结 在日常对操作系统的使用中&#xff0c;大家肯定对程序、进程和线程多少有所耳闻。作为操作系统的重要一部分&#xff0c;…

R 语言学习教程,从入门到精通,R的安装与环境的配置(3)

1、R 基础语法 一门新的语言学习一般是从输出 “Hello, World!” 程序开始&#xff0c;R 语言的 “Hello, World!” 程序代码如下&#xff1a; myString <- "Hello, World!" print ( myString )以上示例将字符串 “Hello, World!” 赋值给 myString 变量&#x…

# mongodb_基础到进阶 -- MongoDB 高级--MongoDB 集群部署与安全性(四)

mongodb_基础到进阶 – MongoDB 高级–MongoDB 集群部署与安全性&#xff08;四&#xff09; 一、mongodb 第一个路由节点创建 1、分片集群架构目标 两个分片节点副本集&#xff08;33&#xff09;一个配置节点副本集&#xff08;3&#xff09;两个路由节点&#xff08;2&am…

day17 Java流程控制——用户交互Scanner

day17 Java流程控制——用户交互Scanner 目录 day17 Java流程控制——用户交互Scanner1. 什么是Scanner对象&#xff1f;2. 实操 1. 什么是Scanner对象&#xff1f; Scanner对象是Java编程语言中的一个类&#xff0c;存在于java.util包中。它用于获取输入&#xff0c;可以是各…