【JavaSE】集合专项练习篇(附源码)(上)

简介: 文章目录1 CollectionTest01.java2 CollectionTest02.java3 CollectionTest03.java4 简答题4.1 试分析 HashSet 与 TreeSet 分别如何实现去重的?5 代码分析题5.1 下面的代码是否会抛出异常,并从源码层面说明原因?5.2 Person类按照id和name重写了hashCode和equals方法,问下面代码输出什么?(容易踩坑)写在最后

1 CollectionTest01.java

按照要求实现:

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

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

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

引民众担忧;

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

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

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

(5)在控制台打印结果。


🐱 参考代码及运行结果:

import java.util.ArrayList;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionTest01 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(new News("新冠确诊病例超千万,数百万印度教徒赴恒河\"圣浴\"引民众担忧"));
        arrayList.add(new News("男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生"));
        // 倒叙遍历
        int size = arrayList.size();
        for (int i = size - 1; i >= 0; i--) {
            News news = (News) arrayList.get(i);
            System.out.println(processTitle(news.getTitle()));
        }
    }
    // 处理新闻标题
    public static String processTitle(String title) {
        if (title == null) {
            return "";
        }
        if (title.length() > 15) {
            return title.substring(0, 15);  // [0, 15)
        }
        return title;
    }
}
class News {
    private String title;
    private String content;
    public News(String title) {
        this.title = title;
    }
    public String getTitle() {
        return title;
    }
    public String getContent() {
        return content;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Override
    public String toString() {
        return "News{" +
                "title='" + title + '\'' +
                '}';
    }
}


2 CollectionTest02.java

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

(1)add:添加单个元素;

(2)remove:删除指定元素;

(3)contains:查找元素是否存在;

(4)size:获取元素的个数;

(5)isEmpty:判断是否为空;

(6)clear:清空;

(7)addAll:添加多个元素;

(8)containsAll:查找多个元素是否都存在;

(9)removeAll:删除多个元素;

使用增强for和迭代器来遍历所有的car,需要重写Car的toString方法。


🐰 参考代码及运行结果:

import java.util.ArrayList;
import java.util.Iterator;
/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
public class CollectionTest02 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        Car car1 = new Car("宝马", 400000);
        Car car2 = new Car("宾利", 5000000);
        // 添加
        arrayList.add(car1);
        arrayList.add(car2);
        System.out.println("add:" + arrayList);
        // 删除
        arrayList.remove(car1);
        System.out.println("remove:" + arrayList);
        // 判断
        System.out.println(arrayList.contains(car2));
        System.out.println(arrayList.isEmpty());
        // 元素个数
        System.out.println(arrayList.size());
        // 清空
        arrayList.clear();
        System.out.println(arrayList);
        // 添加多个
        arrayList.add(car1);
        arrayList.add(car2);
        arrayList.addAll(arrayList);
        System.out.println(arrayList);
        // 查找多个是否存在
        System.out.println(arrayList.containsAll(arrayList));
        for (Object o :
                arrayList) {
            System.out.println(o);
        }
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next);
        }
    }
}
class Car {
    private String name;
    private int price;
    public Car(String name, int price) {
        this.name = name;
        this.price = price;
    }
    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public int getPrice() {
        return price;
    }
}



相关文章
|
4月前
|
安全 Java
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
|
21天前
|
JavaScript Java 测试技术
基于Java的毕业设计选题系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的毕业设计选题系统的设计与实现(源码+lw+部署文档+讲解等)
32 0
基于Java的毕业设计选题系统的设计与实现(源码+lw+部署文档+讲解等)
|
22天前
|
JavaScript Java 测试技术
基于Java的数学竞赛网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的数学竞赛网站的设计与实现(源码+lw+部署文档+讲解等)
22 0
|
4月前
|
存储 Java 索引
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
从零开始学习 Java:简单易懂的入门指南之Collection集合及list集合(二十一)
|
4月前
|
存储 安全 Java
从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)
从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)
|
10月前
|
Java
【JavaSE】Java基础语法(三十三):File 一文详解
1. File类概述和构造方法 File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也
|
8月前
|
Java 程序员 数据安全/隐私保护
重温经典《Thinking in java》第四版之第六章 访问权限控制(三十六)
重温经典《Thinking in java》第四版之第六章 访问权限控制(三十六)
48 0
|
9月前
|
算法 安全 Java
重温经典《Thinking in java》第四版之第二章 一切都是对象(十三)
重温经典《Thinking in java》第四版之第二章 一切都是对象(十三)
29 0
|
10月前
|
搜索推荐 Java 索引
【JavaSE】Java基础语法(二十三):递归与数组的高级操作
1. 递归 1.1 递归 递归的介绍 以编程的角度来看,递归指的是方法定义中调用方法本身的现象 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
|
10月前
|
存储 Java 编译器
【JavaSE】Java(五十):核心要点
1. JDK 和 JRE 有什么区别 JDK(Java Development Kit)和 JRE(Java Runtime Environment)是两个不同的软件包。它们共同提供了 Java 开发和运行时环境,但在功能和用途上存在一些区别。 JRE 包含 Java 运行时环境,它只用于执行 Java 应用程序,而没有提供任何开发工具。JRE 包括 JVM(Java 虚拟机)、Java 标准类库、Java 插件等组件,用户可以利用 JRE 去运行已经编写好的 Java 应用程序。 JDK 则是 Java 开发工具包,它除了包括 JRE 中的组件外,还提供了一系列的开发工具,例如编译器 j