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

这篇具有很好参考价值的文章主要介绍了【JAVA学习笔记】 57 - 本章作业。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目代码

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

目录

项目代码

1.

2.

3.

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

5.

6.


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;
    }

    @Override
    public 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;
    }

    @Override
    public 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.

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

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

上面的是错误的 

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

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

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

6.

【JAVA学习笔记】 57 - 本章作业,学习,笔记文章来源地址https://www.toymoban.com/news/detail-737550.html

到了这里,关于【JAVA学习笔记】 57 - 本章作业的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【书生浦语第二期实战营学习笔记&作业(六)】

    课程文档:https://github.com/InternLM/Tutorial/tree/camp2/agent 课程作业:https://github.com/InternLM/Tutorial/blob/camp2/agent/homework.md 大语言的局限性: 幻觉 时效性 可靠性 AutoGPT ReWOO ReAct https://github.com/InternLM/Tutorial/blob/camp2/agent/lagent.md https://github.com/InternLM/Tutorial/blob/camp2/agent/agentlego.md 完成

    2024年04月25日
    浏览(29)
  • Flink|《Flink 官方文档 - 部署 - 命令行界面 - 提交 PyFlink 作业》学习笔记

    学习文档:《Flink 官方文档 - 部署 - 命令行界面 - 提交 PyFlink 作业》 学习笔记如下: 当前,用户可以通过 CLI 提交 PyFlink 作业。对于通过 flink run 提交的 Python 作业,Flink 会执行 python 命令。因此,在启动 Python 作业前,需要先确定当前环境中的 python 命令指向 3.7+ 版本的 Pyt

    2024年02月22日
    浏览(66)
  • 第57天:django学习(六)

            语法: default         如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如: length         返回值的长度。它对字符串和列表都起作用。例如: filesizeformat         将值格式化为一个 “人类可读的” 文件尺寸 (例如 \\\'13 KB\\\',

    2024年02月04日
    浏览(30)
  • Linux 学习记录57(ARM篇)

    通过IO口的电平,产生对应的外部中断,通过外部中断的处理函数完成相应功能 GIC distributor (GICD)是通用中断控制器(GIC)中的一个组件,它负责接收来自外部设备的中断信号,并将这些中断信号分发给对应的处理器核心进行处理。GICD在多核处理器系统中起到了协调和管理中断

    2024年02月15日
    浏览(44)
  • 神经网络基础-神经网络补充概念-57-多任务学习

    多任务学习(Multi-Task Learning,MTL)是一种机器学习方法,旨在同时学习多个相关任务,通过共享特征表示来提高模型的性能。在多任务学习中,不同任务之间可以是相关的,共享的,或者相互支持的,因此通过同时训练这些任务可以提供更多的信息来改善模型的泛化能力。

    2024年02月12日
    浏览(35)
  • AI:57-基于机器学习的番茄叶部病害图像识别

    🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问

    2024年02月05日
    浏览(49)
  • 0基础学习VR全景平台篇 第57篇:高级功能-多语言

     功能位置示意 一、本功能将用在哪里?   多语言功能,可一键设置作品界面语言为中/英文,或跟随系统自动切换中/英文,各位可以用户可以轻松 制作英文版VR全景作品, 满足国外用户访问的需求。 此外蛙色VR平台,可通过离线导出包 实现日文、法文、德文、俄文及其他

    2024年02月13日
    浏览(39)
  • 【JavaSE专栏57】深度解析Java中的this和super关键字:用途、差异和实际应用

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月07日
    浏览(45)
  • 第5章附录4:本章函数速查表(MATLAB入门课程)

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本章知识点非常多,也介绍了非常多的内置函数。下面根据函数的功能提供了几张速查表,这能帮助大家快

    2024年02月03日
    浏览(39)
  • 【Java学习笔记】 动态代理

    1、什么是动态代理? 前面已经提到了,动态代理就是【在内存】中动态生成【字节码代理类】的技术。(虽然不需要开发者书写,但是在内存层面依然存在该代理对象】 优点 : 减少了代理类的数量 并且解决了代码复用的问题。 动态代理常见的实现技术包括以下三种 JDK内

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包