IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java学习之路(四十五)| 集合(九)—— 集合练习题 -> 正文阅读

[Java知识库]Java学习之路(四十五)| 集合(九)—— 集合练习题

各自努力,最高处见!加油!

1、倒叙遍历、截取字符串

在这里插入图片描述
练习代码:

import java.util.ArrayList;
import java.util.Iterator;

public class Homework1 {
    public static void main(String[] args) {
        News news1 = new News("新冠确诊病例超千万,数百万印度教信徒赴恒河“圣欲”引民众担忧");
        News news2 = new News("男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生");
        ArrayList arrayList = new ArrayList();
        arrayList.add(news1);
        arrayList.add(news2);

        //或者采用String类的substring(a,b);方法截取从a到b的元素(左闭右开)

        for (int i = arrayList.size()-1; i >= 0 ; i--) {
            News news=null;
            if (arrayList.get(i) instanceof News){
                news = (News)arrayList.get(i);
            }
            if (news!=null&&news.title.length()>15){
                char[] chars = news.title.toCharArray();
                for (int j=14;j<chars.length;j++){
                    if(j>14){
                        chars[j]=' ';
                    }else {
                        chars[j]='…';
                    }

                }
                System.out.println(chars);
            }else{
                System.out.println(news);
            }
//            System.out.println(news);
        }

    }
}

class News{
    String title;
    String  content;

    public News(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "News{" +
                "title='" + title +
                '}';
    }
}

2、Map类型对象的遍历、修改、与Set的关系

在这里插入图片描述

3、试分析HashSet和TreeSet分别如何去重

  1. HashSet去重机制:hashCode()+equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置,没有数据,就直接存放。如果有数据,就进行equals比较(遍历比较)。比较后,链表中没有相同的元素,就加入,否则不加入。
    注意:程序员可以通过重写equals方法,决定相同元素的判定机制。
  2. TreeSet去重机制:如果你传入一个Comparator匿名对象,就使用实现的Comparator去重。如果方法返回0,就认为是相同元素/数据,就不添加。如果你没有传入一个Comparator匿名对象,则以你添加的对象实现的Compareable接口的compareTo方法去重。

4、下面代码运行会不会抛出异常,并从源码层面说明原因。(读源码+接口编程+动态绑定)

TreeSet treeSet=new TreeSet();
treeSet.add(new Person());

在这里插入图片描述
原因分析:因为在创建TreeSet对象的时候没有传入Comparator接口的匿名内部类,所以在底层Person转成Comparable类型没有成功,抛出异常。
在这里插入图片描述

解决方法:Person类继承Comparable类并实现compareTo方法。
问:上述代码中treeSet集合能加入多少个元素?
答:1个。
原因:在执行add方法时,会默认进入Person中的compareTo方法中进行比较,但在上述代码中compareTo方法返回0,代表后面加入的对象都是相同的对象,所以加入失败。

5、陷阱题

在这里插入图片描述
分析:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:57:32  更:2021-10-03 16:58:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:24:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码