// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Coll

Similar documents
Chapter 9: Objects and Classes

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基


无类继承.key

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

Guava学习之Resources

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

untitled

IoC容器和Dependency Injection模式.doc

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

基于CDIO一体化理念的课程教学大纲设计

untitled

EJB-Programming-4-cn.doc

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

JavaIO.PDF

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

软件工程文档编制

附录J:Eclipse教程

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Microsoft Word - 01.DOC

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

javaexample-02.pdf

第五章数组 实验目的 (1) 掌握一维 二维数组的定义及初始化方法 (2) 掌握循环结构域数组相结合解决问题的方法 (3) 理解数组下标和数组元素间的关系 (4) 掌握 List 类的使用方法 实验范例 1 静态数组 (1) 数组例 1:( 一维数组 ) 输入一行字符, 分别统计出其中英文字母 空格

RxJava

JAVA String常用APi

(A) 二 小 時 (B) 三 小 時 (C) 四 小 時 (D) 五 小 時 第 一 組 出 題 6. 若 對 於 收 到 的 交 通 違 規 罰 單 不 服, 在 收 到 罰 單 幾 日 內 須 向 警 察 機 關 或 監 理 機 關 申 訴? (A) 十 天 (B) 十 五 天 (C) 二 十

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

《大话设计模式》第一章

Swing-02.pdf

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

输入 project name 选择完成

Learning Java

《C语言程序设计》教材习题参考答案

Java

《C语言程序设计》第2版教材习题参考答案

javac: 负 责 的 是 编 译 的 部 分, 当 执 行 javac 时, 会 启 动 java 的 编 译 器 程 序 对 指 定 扩 展 名 的.java 文 件 进 行 编 译 生 成 了 jvm 可 以 识 别 的 字 节 码 文 件 也 就 是 class 文 件, 也 就 是 ja

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

Microsoft Word - PHP7Ch01.docx

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

二 Synchronized 1. Java 语 言 的 关 键 字, 当 它 用 来 修 饰 一 个 方 法 或 者 一 个 代 码 块 的 时 候, 能 够 保 证 在 同 一 时 刻 最 多 只 有 一 个 线 程 执 行 该 段 代 码 2. 当 两 个 并 发 线 程 访 问 同 一 个

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

untitled

Apache Spark 2.4 新增内置函数和高阶函数使用介绍

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

chp6.ppt

untitled

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

建模与图形思考

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

chap07.key

使用MapReduce读取XML文件

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

Microsoft PowerPoint - string_kruse [兼容模式]

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Microsoft Word - 6-農業-10

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

Microsoft PowerPoint - ch6 [相容模式]

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

Microsoft Word - ch04三校.doc

Transcription:

第 6 章集合 案例 6-1 Collection 单列集合的操作 一 案例描述 1 考核知识点编号 :063006002~063006008 063006018 名称 :Collection 单列集合 Arrays 工具类 2 练习目标 掌握 Collection 单列集合方法的使用 3 需求分析 Collection 是所有单列集合的根接口, 在 Collection 中定义了单列集合 (List 和 Set) 通用的 一些方法 为了让初学者熟悉 Collection 接口中的常用方法, 本案例将演示 Collection 单列集合中 的方法对集合进行操作来学习方法的使用 4 设计思路 ( 实现原理 ) 1) 编写一个类 Example01 2) 在类中定义两个字符串 : String str1 = "BeiJing is a beautiful city"; String str2 = "tom is a cat"; 3) 要求使用集合的相关知识对这两个字符串进行操作, 获取两个字符串中字符的并集和交集, 并遍历输出 二 案例实现 import java.util.*; public class Example01 { public static void main(string[] args){ String str1 = "BeiJing is a beautiful city"; String str2 = "tom is a cat"; // 1 先对字符串进行分隔, 转换为字符数组 String[] strings1 = str1.split(" "); String[] strings2 = str2.split(" "); // 2 将字符串数组转换为 ArrayList 集合 List<String> list1 = Arrays.asList(strings1); List<String> list2 = Arrays.asList(strings2); // 3 将 ArrayList 集合转换为 HashSet 集合 ( 可以去重 ) HashSet<String> set1 = new HashSet<>(list1); HashSet<String> set2 = new HashSet<>(list2);

// 获取并集 // set1.addall(set2); // 获取交集 set1.retainall(set2); // 打印操作结果 set1.foreach(o -> System.out.println(o)); 运行结果如图 6-1 所示 图 6-1 运行结果 三 案例总结 1 Collection 是所有单列集合的父接口, 因此在 Collection 中定义了单列集合 (List 和 Set) 通用的一些方法, 这些方法可用于操作所有的单列集合 同时 Arrays 工具类中也提供了大量的静态方法来操作数组 如表 6-1 所示 表 6-1 案例中的方法方法声明功能描述 String[] split(string regex) String 字符串类的方法, 使用指定规则 regex 对字符串进行切割, 返回字符串数组 static <T> List<T> aslist(t... a) Arrays 工具类的静态方法, 用于将泛型数据源转换为 ArrayList 集合并返回该集合 public HashSet(Collection<? extends E> HashSet 的有参构造方法, 用于将指定 Collection 集合转换为 c) HashSet 集合 boolean addall(collection<? extends E> Collection 接口的方法, 用于将一个 Collection 集合中的所有元 c) 素都添加到另一个集合中 boolean retainall(collection<?> c) Collection 接口的方法, 用于对比两个集合的共有元素 default void foreach(consumer<? super Iterable 接口中 JDK 8 新增的默认方法, 接收函数式接口对元素 T> action) 进行遍历

案例 6-2 Map 双列集合的操作 一 案例描述 1 考核知识点编号 :063006011~ 063006016 名称 :Map 双列集合 2 练习目标 掌握 Map 集合的常用方法的使用 3 需求分析 Map 是所有双列集合的根接口, 在 Map 中定义了双列集合通用的一些方法 为了让初学者 熟悉 Map 接口中的常用方法, 本案例将演示 Map 接口中的方法对集合进行操作来学习方法的使 用 4 设计思路 ( 实现原理 ) 1) 编写一个类 Example02 2) 假设有有如下一些学生信息 : id name 5 tom 2 jack 6 lucy 4 bob 1 tom 3) 根据所学集合知识统计学生信息 (id 对应 name 映射 ), 并且能够避免重复录入, 同时按照 id 顺序排序 4) 录入成功后, 查找并移除 name 为 bob 的学生 5) 最后对剩余学生遍历输出 二 案例实现 import java.util.*; import java.util.map.entry; public class Example02 { public static void main(string[] args) { // 1 创建 TreeMap 集合, 并根据 key 顺序排序 Map<String, String> map = new TreeMap<>((Object obj1, Object obj2) -> { String s1 = (String) obj1; String s2 = (String) obj2; return s1.compareto(s2); ); map.put("5", "tom"); map.put("2", "jack"); map.put("6", "lucy");

map.put("4", "bob"); map.put("1", "tom"); // 2 查找并删除 name 为 bob 的学生信息 Set<Entry<String,String>> set = map.entryset(); Iterator<Entry<String, String>> it = set.iterator(); while (it.hasnext()){ Entry<String, String> next = it.next(); if(next.getvalue().equals("bob")){ it.remove(); // 3 遍历集合元素 map.foreach((k, v) -> System.out.println(k + ":" + v)); 运行结果如图 6-2 所示 图 6-2 运行结果 三 案例总结 1 Map 集合存入元素时, 键 key 不会重复, 使用 TreeMap 可以定制元素排序规则 2 在对 Map 元素进行删除操作时, 通常是根据 key 删除元素, 当根据 value 删除元素时, 可以像案例代码中使用 iterator 迭代器查找对应 value 元素, 然后使用迭代器删除 ; 或者是对 map 集合进行遍历, 查找对应的 value 元素, 然后使用 map 集合通过 key 对元素删除 案例 6-3 聚合操作的使用 一 案例描述 1 考核知识点编号 :063006019~ 063006022 名称 :JDK 8 聚合操作的使用 2 练习目标 掌握 JDK 8 聚合操作的使用方法 3 需求分析

聚合操作主要使用 Stream 接口将集合 数组的中的元素转换为 Stream 流的形式, 并结合 Lambda 表达式的优势来进一步简化集合 数组中元素的查找 过滤 转换等操作, 这是 JDK 8 新增功能 本案例将使用聚合操作对集合进行操作, 从而方便初学者学习相关使用方法 4 设计思路 ( 实现原理 ) 1) 编写一个类 Example03 2) 假设有有如下一个字符串 : String[] str = {"cab","b","ke","ke","abcde","ad","edae"; 3) 要求使用聚合操作的相关知识将字符串最终转换为 list 集合, 并遍历输出, 输出结果为 : abcd eda k 二 案例实现 import java.util.arrays; import java.util.stream.collectors; public class Test { public static void main(string[] args) { String[] str = {"cab","b","ke","ke","abcde","ad","edae"; Arrays.stream(str).filter(s -> s.endswith("e")).distinct().sorted((s1,s2) ->{ return s2.length()-s1.length(); ).map(s -> s.substring(0, s.length()-1)).collect(collectors.tolist()).foreach(o -> System.out.println(o)); 运行结果如图 6-3 所示 图 6-3 运行结果 三 案例总结 1 通过聚合操作可以将集合 数组的中的元素转换为 Stream 流的形式, 并结合 Lambda 表达式的优 势来进一步简化集合 数组中元素的查找 过滤 转换等操作 2 JDK 8 中的聚合操作提供了大量操作流元素的方法, 案例中使用到了部分方法 如表 6-2 所示

方法声明 static <T> Stream<T> stream(t[] array) Stream<T> filter(predicate<? super T> predicate) Stream<T> distinct() Stream<T> sorted(comparator<? super T> comparator) Stream<R> map(function<? super T,? extends R> mapper) R collect(collector<? super T, A, R> collector) default void foreach(consumer<? super T> action) 表 6-2 案例中的方法功能描述 Arrays 工具类的静态方法, 可以将数组转换为 Stream 流元素 Stream 接口方法, 用于对流元素进行过滤, 返回一个新的流元素对象 Stream 接口方法, 用于对流元素进行去重, 返回一个新的流元素对象 Stream 接口方法, 用于对流元素进行排序 ( 可定制排序规则 ), 返回一个新的流元素对象 Stream 接口方法, 用于对流元素进行规则映射, 返回一个新的流元素对象 Stream 接口方法, 用于对流元素进行收集转换, 返回一个新的流元素对象 Iterable 接口的默认方法, 用于对元素进行遍历