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

2023-11-02 02:15
文章标签 java 学习 笔记 作业 57 本章

本文主要是介绍【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 - 本章作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327400

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S