当前位置: 首页 > news >正文

【JAVA学习笔记】 57 - 本章作业

项目代码

https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/homework

1.

(1)封装个新闻类,包含标题和内容属性,提供get, set方法, 重写toString方法,打印对象时只打印标题;

(2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象:

        新闻一:新冠确诊病例超千万,数百万印度教信徒赴恒河“圣浴”引民众担忧

        新闻二:男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生

(3)将新闻对象添加到ArrayList集合中,并且进行倒序遍历:

(4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前15个,然后在后边加

(5)在控制台打印遍历出经过处理的新闻标题;
 

public class Homework01 {public static void main(String[] args) {News news1 = new News("新冠确诊病例超千万,数百万印度教信徒赴恒河“圣浴”引民众担忧");News news2 = new News("男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生");List list = new ArrayList();list.add(news1);list.add(news2);News temp;for (int i = list.size() - 1; i >= 0; i--) {temp = (News) list.get(i);if (temp.getTitle().length() > 15) {String temp1 = temp.getTitle().substring(0,15) + "...";System.out.println(temp1);} else {System.out.println(temp.getTitle());}}}
}class News {private String title;private String context;public News(String title) {this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContext() {return context;}public void setContext(String context) {this.context = context;}@Overridepublic String toString() {return "News{" +"title='" + title + '\'' +", context='" + context + '\'' +'}';}
}

2.

使用ArrayList完成对对象Car {name, price}的各种操作

1.add:添加单个元素

2.remove:删除指定元素

        Car car = new Car("宝马",400000);

3.contains:查找元素是否存在

        Car car2 = new Car("宾利",5000000):

4.size:获取元素个数

5.isEmpty:判断是否为空

6.clear:清空

7.addAIl:添加多个元素

8.containsAll:查找多个元素是否都存在

9.removeAll:删除多个元素使用增强for和迭代器来遍历所有的car,需要重写Car的toString方法

public class Homework02 {public static void main(String[] args) {ArrayList arrayList = new ArrayList();Car car = new Car("宝马", 400000);Car car2 = new Car("宾利",5000000);//1.add:添加单个元素arrayList.add(car);arrayList.add(car2);System.out.println(arrayList);//* 2.remove:删除指定元素arrayList.remove(car);System.out.println(arrayList);//* 3.contains:查找元素是否存在System.out.println(arrayList.contains(car));//F//* 4.size:获取元素个数System.out.println(arrayList.size());//1//* 5.isEmpty:判断是否为空System.out.println(arrayList.isEmpty());//F//* 6.clear:清空//System.out.println(arrayList.clear(););//* 7.addAll:添加多个元素System.out.println(arrayList);arrayList.addAll(arrayList);//2个宾利System.out.println(arrayList);//* 8.containsAll:查找多个元素是否都存在arrayList.containsAll(arrayList);//T//* 9.removeAll:删除多个元素//arrayList.removeAll(arrayList); //相当于清空//* 使用增强for和 迭代器来遍历所有的car , 需要重写 Car 的toString方法for (Object o : arrayList) {System.out.println(o);//}System.out.println("===迭代器===");Iterator iterator = arrayList.iterator();while (iterator.hasNext()) {Object next =  iterator.next();System.out.println(next);}}
}class Car {private String name;private double price;public Car(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", price=" + price +'}';}
}

3.

按要求完成下列任务

1)使用HashMap类实例化一个Map类型的对象m, 键(String) 和值(int) 分别用于存储员,工的姓名和工资,存入数据如下:jack- -650元; tom- -1 200元; smith- 2900元;

2)将jack的工资更改为2600元

3)为所有员工工资加薪100元

4)遍历集合中所有的员工

5)遍历集合中所有的工资
 

public class Homework03 {public static void main(String[] args) {HashMap m = new HashMap();m.put("jack", 650);m.put("tom", 1200);m.put("smith", 2900);System.out.println(m);m.put("jack",2600);System.out.println(m);Set keySet = m.keySet();for (Object key :keySet) {m.put(key,(Integer)m.get(key) + 100);}System.out.println(m);Set entrySet = m.entrySet();Iterator iterator = entrySet.iterator();while (iterator.hasNext()) {Map.Entry entry=  (Map.Entry)iterator.next();System.out.println(entry.getKey() + " " +  entry.getValue());}Collection value = m.values();System.out.println(value);}
}

4.试分析HashSet和TreeSet分别如何实现去重的

1.hashset是单列集合,使用的本质上是hashmap的方法,判断key值是否重复是通过添加的第二个开始的key和之前的key值相比较,先是判断计算出的hash值的table[i]是否为空,如果为空直接存入该数组元素,不为空,执行下列的判断是否为红黑树,判断内容是否相同,在内容判断上,也采用了hash值与eques方法或指向的地址来判断,所以这时候可以重写equals来自定义是否相同。

(hashCode()+equals())

而TreeSet本质上是用了一个匿名内部类的比较接口类,该类可以自定义判断相同,调用了TreeMap方法,里面调用compare方法,如果传入了重写compare会去实现,如果没有传入,则以添加的对象实现的Compare接口的compareTo的方法。

//public class Homework05 {
//    public static void main(String[] args) {
//        TreeSet treeSet = new TreeSet();
//        //分析源码
//        //add 方法,因为 TreeSet() 构造器没有传入Comparator接口的匿名内部类
//        //所以在底层 Comparable<? super K> k = (Comparable<? super K>) key;
//        //即 把 Perosn转成 Comparable类型
//        treeSet.add(new Person());//ClassCastException.
//        System.out.println(treeSet);
//    }
//}
//
//class Person implements Comparable{
//
//    @Override
//    public int compareTo(Object o) {
//        return 0;
//    }
//}

5.

上面的是错误的 

remove底层会判断该对象的hash,但是下标已经找不到原先的p1,所以删除失败,然后最后一个1001“AA”,因为原先加过了,所以 会定在原先hash的位置,然后再判断内容不相同,会挂在该索引的屁股后面,所以输出为4个对象

6.

相关文章:

【JAVA学习笔记】 57 - 本章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/homework 1. (1)封装个新闻类&#xff0c;包含标题和内容属性&#xff0c;提供get, set方法&#xff0c; 重写toString方法&#xff0c;打印对象时只打印标题; (2)只提供…...

【题解】[GenshinOI Round 3] P9816 少项式复合幂

题目链接 分析 首先这题给了很大的提示信息 注意 m 和 p 的范围 , 很自然的想到可以先把所有可能的 f ( x ) f(x) f(x) 算出来. 思维误区 有些人在算完 f ( x ) f(x) f(x) 之后可能就会去思考找环的问题&#xff0c;然后一些码力弱的大佬就会祭掉. 在经过仔细的观察之后…...

手写数字识别--神经网络实验

实验源码自取&#xff1a; 神经网络实验报告源码.zip - 蓝奏云 上深度学习的课程&#xff0c;老师布置了一个经典的实验报告&#xff0c;我做了好久才搞懂&#xff0c;所以把实验报告放到CSDN保存&#xff0c;自己忘了方便查阅&#xff0c;也为其他人提供借鉴 由于本人是小白…...

双11消费遇冷?如何让消费回归心智原点

近一年来&#xff0c;小红书话题「重新养育自己」引热议。直面成长缺憾&#xff0c;不少人探寻解决方案&#xff0c;即像对待新生命般&#xff0c;不论是衣食住行还是心灵&#xff0c;重新关照自己。 借此&#xff0c;本期千瓜将锁定小红书热门话题背后的消费观转变&#xff0…...

一分钟了解:什么是Image Matting?

1. 基本概念 Image Matting是图像处理领域的一个基本任务&#xff0c;意为“图像背景抠出”或者“抠图”。这项任务在图像处理、影视制作领域广泛应用。比如&#xff0c;拍电影时常用的扣绿&#xff0c;就是演员在绿幕前面表演&#xff0c;后期再把人物抠出来放到一个新的背景…...

微信小程序 跳转客服页面

前言 小程序 用户反馈 没有页面设计 可以直接跳转小程序指定客服页面 <button class"contactBtn"open-type"contact" contact"handleContact" session-from"sessionFrom">...

10个简单增删改查的免费Spring Boot源代码项目

此页面包含用于学习目的的免费 Spring boot 项目列表。每个 Spring boot 项目的源代码都托管在 GitHub 存储库上&#xff0c;因此您可以免费下载或克隆源代码并亲身体验 Spring boot 框架。 1.员工管理应用程序&#xff08;ReactJS Spring Boot CRUD全栈应用程序&#xff09; …...

mysql数据表设计

命名 mysql表名的命名规范为表名可以用 t_ 、tb_的前缀&#xff0c;或者是业务模块前缀。比如t_order。 有些项目也会使用 tt_、tm_、 ts_ 等前缀&#xff0c;根据项目的习惯命名就好了。 主键&#xff1a; AUTO_INCREMENT 表示自增&#xff0c;UNSIGNED 表示无符号&#xf…...

pytorch复现4_Resnet

ResNet在《Deep Residual Learning for Image Recognition》论文中提出&#xff0c;是在CVPR 2016发表的一种影响深远的网络模型&#xff0c;由何凯明大神团队提出来&#xff0c;在ImageNet的分类比赛上将网络深度直接提高到了152层&#xff0c;前一年夺冠的VGG只有19层。Image…...

【数据库】形式化关系查询语言(一):关系代数Relational Algebra:基本运算、附加关系代数、扩展的关系代数

目录 一、关系代数Relational Algebra 1. 基本运算 a. 选择运算&#xff08;Select Operation&#xff09; b. 投影运算&#xff08;Project Operation&#xff09; 组合 c. 并运算&#xff08;Union Operation&#xff09; d. 集合差运算&#xff08;Set Difference Op…...

【计算机网络】计算机网络和因特网

一.基本术语介绍 端系统通过通信链路&#xff08;communication link&#xff09;和分组交换机&#xff08;packet switch&#xff09;连接到一起&#xff0c;连接这些端系统和分组交换机的物理媒体包括&#xff1a;同轴电缆&#xff0c;铜线&#xff0c;光纤和无线电频谱。而…...

JAVA面经整理(9)

一)什么是Spring&#xff1f;它有什么优点? spring是一款顶级的开源框架&#xff0c;他是包含了众多工具方法的IOC容器&#xff0c;Spring中包含了很多模块&#xff0c;比如说Spring-core&#xff0c;Spring-context&#xff0c;Spring-aop&#xff0c;Spring-web&#xff0c;…...

IPD(集成产品开发)模式下的产品研发流程

IPD&#xff08;集成产品开发&#xff09;涵盖了产品从创意提出到研发、生产、运营等&#xff0c;包含了产品开发到营销运营的整个过程。围绕产品&#xff08;或项目&#xff09;生命周期的过程的管理模式&#xff0c;是一套生产流程&#xff0c;更是时下国际先进的管理体系。I…...

Flutter GetX的使用

比较强大的状态管理框架 引入库&#xff1a; dependencies:get: ^4.6.6一.实现一个简单的demo 实现一个计数器功能 代码如下&#xff1a; import package:flutter/material.dart; import package:get/get.dart;void main() > runApp(const GetMaterialApp(home: Home()…...

【Amazon】AWS实战 | 快速发布安全传输的静态页面

文章目录 一、实验架构图二、实验涉及的AWS服务三、实验操作步骤1. 创建S3存储桶&#xff0c;存放网站网页2. 使用ACM建立域名证书3. 设置Cloudfront&#xff0c;连接S3存储桶✴️4. 设置Route53&#xff0c;解析域名服务5. 通过CLI工具上传网页更新内容【可选】 四、实验总结 …...

前后端登录的密码加密和解密

在一个典型的前后端应用中&#xff0c;前端对密码进行加密后传给后端&#xff0c;后端再进行解密或验证。这通常涉及前端加密、后端解密或验证的相互配合。下面是一个基本的流程&#xff1a; 前端加密&#xff1a; 前端可以使用各种加密库或算法对密码进行加密。常见的是使用哈…...

使用 Curl 和 DomCrawler 下载抖音视频链接并存储到指定文件夹

项目需求 假设我们需要从抖音平台上下载一些特定的视频&#xff0c;以便进行分析、编辑或其他用途。为了实现这个目标&#xff0c;我们需要编写一个爬虫程序来获取抖音视频的链接&#xff0c;并将其保存到本地文件夹中。 目标分析 在开始编写爬虫之前&#xff0c;我们需要了…...

取消Excel打开密码的两种方法

Excel设置了打开密码&#xff0c;想要取消打开密码是由两种方法的&#xff0c;今天分享这两种方法给大家。 想要取消密码是需要直到正确密码的&#xff0c;因为只有打开文件才能进行取消密码的操作 方法一&#xff1a; 是大家常见的取消方法&#xff0c;打开excel文件之后&a…...

多测师肖sir_高级金牌讲师_jmeter 反向代理录制脚本

jemeter自带的录制脚本功能&#xff0c;是利用代理服务器来进行录制的 1&#xff0c;新建一个线程组 2&#xff0c;新建一个代理服务器 右击工作台-添加-非测试元件-http代理服务器 3&#xff0c; 配置http代理服务器 端口&#xff1a; 默认为8888&#xff0c;可修改。但…...

网络取证-Tomcat-简单

题干&#xff1a; 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况&#xff0c;团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动&#xff0c;这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...