java练习题之List(ArrayList)集合练习

news2024/11/16 2:30:50

List集合

习题:

1:完成以下填空:

List 接口的特点是元素  有序 (有|无)顺序,  可重复 (可以|不可以)重复;

2:(List)关于List 集合描述正确的是()

A.可以利用List 直接创建集合对象,用于存储多个数据

B.List 集合可以利用下标操作集合中的元素

C.Collection 是List 的父接口(正确)

D.List 中的功能方法全部继承于父接口

3:(List)欲构造ArrayList 类的一个实例,此类继承了 List 接口,下列哪个方法是正确的()

ArrayList myList = new Object(); 顶级父类

List myList = new ArrayList();

ArrayList myList = new List();

List myList = new List();

4:(List)仔细阅读以下代码,写出程序运行的结果。

Hello

Learn

5:(List)简单介绍ArrayList、LinkedList、Vector 的特性及区别。

ArrayList底层是数组结构  所以他是有序的  查询快,增删慢  线程不安全,效率高

LinkedList底层是链表结构   查询慢  增删快   线程不安全,效率高

Vector 底层数组实现 都慢 线程安全,效率低

6:(List)简述List<String> list1= new ArrayList<String>();和List list2 =new ArrayList();区别及

<String>的作用。

List<String> 有泛型约束,是他只能存放String类型的元素,更加的安全

list没有泛型约束,可以存放不同类型的元素,放的更多,越不安全,有时需要进行类型强转

使类型安全,代码清晰,具有向后兼容性,不用进行类型强转,更加的方便

7:(List)编程:创建一个工人类,属性:姓名、年龄、工资,要求如下:

①为Worker 提供无、有参数的构造方法,属性私有,并提供公开的 get/set

②创建多个Worker 类,存储在List 集合中。

③打印输出所有的工人信息。

④计算所有工人的平均工资。

⑤打印输出姓名中包含 "胡" 的所有工人信息。

⑥打印输出所有姓 "胡" 的工人信息。

⑦键盘输入一个姓名,查找是否存在此员工,存在,则打印输出员工的信息, 如果不存在,则输出"查 无此人"

⑧输入一个工资,查询工资 大于 输入工资的员工信息。

package com.by.homework3;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Worker {
    private String name;
    private int age;
    private double salary;

    public Worker() {
    }

    public Worker(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public String toString(){
        return "姓名:"+name+",年龄:"+age+",薪资:"+salary;
    }
}

class WorkTest{
    public static void main(String[] args) {
        List<Worker> list = new ArrayList<>();
        list.add(new Worker("张三", 18, 2000));
        list.add(new Worker("李四", 19, 3000));
        list.add(new Worker("王五", 20, 4000));
        list.add(new Worker("赵胡麻", 21, 5000));
        list.add(new Worker("胡八一", 22, 6000));
        list.forEach(o -> System.out.println(o + " "));

        System.out.println();
        System.out.println();
        System.out.println("---------------------------");

        double average = 0;
        for (int i = 0; i<list.size(); i++){
            average+=list.get(i).getSalary();
            String s=String.valueOf(list.get(i));
            if (s.contains("胡")){
                System.out.println(list.get(i));
            }
        }
        System.out.println();
        System.out.println("平均工资为:"+average/5);
        String string=String.valueOf(list);
        char []chars=string.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (String.valueOf(chars[i]).equals("胡")){
                System.out.println(chars[i]);
            }
        }

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入名字");
        String s1=sc.next();
        boolean boo=false;
        for (int i=0;i<list.size();i++){
            if(s1.equals(list.get(i).getName())){
                System.out.println(list.get(i));
                boo=true;
            }
        }
        if (!boo){
            System.out.println("不存在");
        }
        System.out.println("请输入工资");
        double d=sc.nextInt();
        for (int i=0;i<list.size();i++){
            if(d<list.get(i).getSalary()){
                System.out.println(list.get(i));
                boo=true;
            }
        }
        if (!boo){
            System.out.println("不存在");
        }
    }
}

8:(List)编程:已知有 Worker 类,属性为姓名、年龄、工资,完成类的封装并提供无参数、有参数构造方法,完成以下要求:

①创建一个List,在List 中增加三个工人,基本信息如下 :

姓名 年龄 工资

zhang3 18 3000

li4 25 3500

Wang5 22 3200

②在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300

③删除wang5 的信息

④利用下标遍历,打印输出所有工人信息

⑤利用forEach 遍历,打印输出所有年龄大于 20 的工人信息

⑥对Worker 类添加eqauls 方法

package com.by.homework3;

import java.util.ArrayList;
import java.util.List;

public class Worker1 {
    private String name;
    private int age;
    private double salary;

    public Worker1() {
    }

    public Worker1(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public String toString() {
        return "姓名:" + name + ",年龄:" + age + ",薪资:" + salary;
    }

    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (this.getClass() != o.getClass() || o.getClass() == null) {
            return false;
        }
        return this.name.equals(((Worker1) o).name);
    }
}
    class WorkerTest1 {
        public static void main(String[] args) {
            List list = new ArrayList();
            list.add(new Worker1("zhang3", 18, 3000));
            list.add(new Worker1("li4", 25, 3500));
            list.add(new Worker1("wang5", 22, 3200));
            list.add(1, new Worker1("zhao6", 24, 3300));
            list.remove(3);
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            System.out.println();
            System.out.println("--------------------------");
            for (Object w : list) {
                Worker1 worker1 = (Worker1) w;
                if (worker1.getAge() > 20) {
                    System.out.println(w);
                }
            }
        }

}

9:(List) 创建一个商品(Produtor)类,属性:商品名,商品单价,商品的数量,商品产地。

     ① 创建多个商品对象,存储在List集合中。

② 显示所有的商品信息。

③ 打印输出商品价格 > 1000 的所有商品信息。

④ 打印售空的商品的信息。

⑤ 打印输出商品产地为"北京"的商品信息。

⑥ 输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!!!"

⑦ 输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。

package com.by.homework3;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.function.Consumer;

public class Produtor {
    private String name;
    private double price;
    private int num;
    private String production;

    public Produtor() {
    }

    public Produtor(String name, double price, int num, String production) {
        this.name = name;
        this.price = price;
        this.num = num;
        this.production = production;
    }

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

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getProduction() {
        return production;
    }

    public void setProduction(String production) {
        this.production = production;
    }
    public String toString(){
        return "商品名:"+name+",价格:"+price+",数量:"+num+",产地:"+production;
    }
}






class ProdutorTest{
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(new Produtor("小米",4999,99,"北京"));
        list.add(new Produtor("红米",999,88,"杭州"));
        list.add(new Produtor("华为",6999,0,"北京"));
        list.add(new Produtor("苹果",10099,9999,"America"));
        list.add(new Produtor("杂牌",100,999999,"华强北"));

        list.forEach(new Consumer() {
            @Override
            public void accept(Object o) {
                System.out.println(o+"");
            }
        });

        System.out.println();
        System.out.println("------------");

        for (int i=0;i<list.size();i++){
            Produtor produtor=(Produtor) list.get(i);
            if (produtor.getPrice()>1000){
                System.out.println(produtor);
            }

        }
        System.out.println();
        for (int i=0;i<list.size();i++){
            Produtor produtor=(Produtor) list.get(i);
            if (produtor.getNum()==0){
                System.out.println("售空产品为:"+produtor);
            }
            if(produtor.getProduction().equals("北京")){
                System.out.println(produtor);
            }

        }

        System.out.println();
        for (int i=0;i<list.size();i++){
            Produtor produtor=(Produtor) list.get(i);

            if(produtor.getProduction().equals("北京")){
                System.out.println(produtor);
            }

        }


        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入商品名:");
        String name=scanner.next();
        boolean boo=false;
        for (int i=0;i<list.size();i++){
            Produtor produtor=(Produtor) list.get(i);
            if (produtor.getName().equals(name)){
                System.out.println(produtor);
                boo=true;
            }
        }
        if (!boo){
            System.out.println("不存在");
        }
        System.out.println("输入低价");

        double price1=scanner.nextInt();
        System.out.println("输入高价");
        double price2=scanner.nextInt();
        for (int i=0;i<list.size();i++){
            Produtor produtor=(Produtor) list.get(i);
            if (produtor.getPrice()>=price1&&produtor.getPrice()<=price2){
                System.out.println(produtor);
            }

        }

    }
}

10:(List)定义一个用户类(User):---要求封装

① 属性:用户名、密码、是否在线(是-true)

② 提供有参数、无参数的构造方法

③ 创建多个对象,存储在集合中,并统计在线用户数量,打印在控制台上。

package com.by.homework3;

import java.util.ArrayList;
import java.util.List;

public class User {
    private String name;
    private String password;
    private boolean zaixian;

    public User() {
    }

    public User(String name, String password, boolean zaixian) {
        this.name = name;
        this.password = password;
        this.zaixian = zaixian;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public boolean isZaixian() {
        return zaixian;
    }

    public void setZaixian(boolean zaixian) {
        this.zaixian = zaixian;
    }
    public String toString(){
        return "用户名"+name+"密码"+password+"是否在线"+zaixian;
    }
}
class UserTest{
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(new User("张三","123",true));
        list.add(new User("李四","312",false));
        list.add(new User("王五","456",true));
        for(int i=0;i<list.size();i++){
            User u=(User)list.get(i);
            if (u.isZaixian()==true){
                System.out.println(u);
            }

        }
    }


}

11:(List)定义一个员工类(Employee):---要求封装

① 属性:姓名,生日月,工资

② 提供无参数\有参数的构造方法

③ 创建多个员工对象,存储在Employee数组中.

④ 利用toString方法展示所有员工的信息,要求格式为: 张三-10-18000.0

⑤ 控制台输入当前月份,统计过生日的员工数量.

⑥ 控制台输入一个工资,打印工资高于此工资的所有员工信息.

package com.by.homework3;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Employee {
    private String name;
    private int birthday;
    private double salary;

    public Employee() {
    }

    public Employee(String name, int birthday, double salary) {
        this.name = name;
        this.birthday = birthday;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBirthday() {
        return birthday;
    }

    public void setBirthday(int birthday) {
        this.birthday = birthday;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    public String toString(){
        return name+"-"+birthday+"-"+salary;
    }
}
class EmployeeTest{
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add(new Employee("张三",10,10000));
        list.add(new Employee("李四",9,20000));
        list.add(new Employee("王五",8,30000));
        list.add(new Employee("赵六",7,40000));
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入当前月份");
        int month=sc.nextInt();
        for (int i=0;i<list.size();i++){
            Employee e=(Employee) list.get(i);
            if (e.getBirthday()==month){
                System.out.println(e);
            }
        }
        System.out.println("请输入工资:");
        double d=sc.nextInt();
        for (int i=0;i<list.size();i++){
            Employee e=(Employee) list.get(i);
            if (e.getSalary()>d){
                System.out.println(e);
            }
        }


    }
}

12:(List)在控制台输入格式为“张三/18/男/99.5”的学生若干,存于List集合中。

要求:

①从数组遍历所有内容解析为学生对象,将学生在存于一个新的List集合

②遍历集合找出”优秀”的学生信息(优秀:成绩>=80)

③找出集合中没有参加考试的学生信息(成绩为null)

④排除集合中的重复元素

⑤制定成绩光荣榜(成绩从高到低打印学生成绩)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年第十三届中国数据库技术大会(DTCC2022)-核心PPT资料下载

一、峰会简介 本届大会以“数据智能 价值创新”为主题&#xff0c;设置2大主会场&#xff0c;20技术专场&#xff0c;邀请超百位行业专家&#xff0c;重点围绕时序数据库、图数据技术、实时数仓技术与应用实践、云原生数据库、大数据平台与数据安全等内容展开分享和探讨&#…

git的拉取、提交、合并、解决冲突详细教程

我们在开发中使用git&#xff0c;经常会遇到拉代码&#xff0c;切换分支&#xff0c;提交代码&#xff0c;新建分支&#xff0c;合并代码&#xff0c;解决冲突这些操作&#xff0c;下面我跟大家分享一个好用的git工具来进行这些操作。 首先&#xff0c;我们下载一个git工具 点…

Python在金融大数据分析中的AI应用实战

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 随着人工智能时代的到来&#xff0c;Python作为…

数据结构学习 jz16 数值的整数次方

关键词&#xff1a;快速幂 位运算 之前已经学过快速幂了&#xff0c;所以只是回忆。快速幂有递归版和非递归版。 题目&#xff1a; 这道题和之前的快速幂的区别是 n可能为负数。分类讨论即可。 思路&#xff1a; 区分正负&#xff1a; if (n < 0) return POW(1.0 / x, …

git 回退版本

git 回退版本 1.查看记录 git log 2.如何回退 git reset --hard commit_id commit_id为上面加深的id 3.强制提交 git push origin HEAD --force

关于BraTS数据集中的Ground Truth标签的划分描述

引用自&#xff1a; Wang, Wenxuan, et al. "Transbts: Multimodal brain tumor segmentation using transformer." Medical Image Computing and Computer Assisted Intervention–MICCAI 2021: 24th International Conference, Strasbourg, France, September 27–…

第12课 利用openCV检测物体是否运动了

FFmpeg与openCV绝对是绝配。前面我们已经基本熟悉了FFmpeg的工作流程&#xff0c;这一章我们重点来看看openCV。 在前面&#xff0c;我们已经使用openCV打开过摄像头并在MFC中显示图像&#xff0c;但openCV能做的要远超你的想像&#xff0c;比如可以用它来实现人脸检测、车牌识…

web3d-three.js场景设计器-TransformControls模型控制器

场景设计器-TransformControls 控制器 该控制器可以指定模型进入可控制模式-如图有三种控制方式 translate --移动模式 rotate -- 旋转模式 scale -- 缩放模式 方便布局过程中快捷对模型进行摆放操作。 引入方式 import { TransformControls } from three/examples/jsm/…

设计模式(4)--类行为(10)--模板方法

1. 意图 定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。 模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2. 两种角色 抽象类(Abstract Class)、具体类(Concrete Class) 3. 优点 3.1 一种代码复用的基本技术。提取公共行为&am…

C语言编译器(C语言编程软件)完全攻略(第十部分:VS2022下载和安装教程(图解版))

介绍常用C语言编译器的安装、配置和使用。 十、VS2022下载和安装教程&#xff08;图解版&#xff09; Visual Studio&#xff08;简称 VS&#xff09;是微软开发的一款 IDE&#xff0c;支持多种编程语言&#xff08;C/C、Python、C#、JavaScript 等&#xff09;&#xff0c;实…

项目中对日期进行格式化的方法

方式一&#xff1a;在属性上添加注解进行格式化 需要引入jackson包 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version> </dependency>在属性上…

Fiddler 到底能做什么?

Fiddler是检查 Http 流量的最流行的工具之一。此工具可帮助我们非常轻松地测试 REST API / SOAP Web 请求。 题主的问题&#xff1a;Fiddler 到底能做什么。仔细思考&#xff0c;其实有两层意思&#xff1a; 第一层&#xff1a;Fiddler工具的应用范围 第二层&#xff1a;Fiddle…

垂直领域大模型——文档图像大模型的思考与探索

〇、前言 12月1日&#xff0c;2023中国图象图形学学会青年科学家会议在广州召开。超1400名研究人员齐聚一堂&#xff0c;进行学术交流与研讨&#xff0c;共同探索促进图象图形领域“产学研”交流合作。 大会上&#xff0c;合合信息智能技术平台事业部副总经理、高级工程师丁凯博…

C++基础语法——数组、函数、指针和结构体

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; >第1阶段-C基础入门 ---------第2阶段实战-通讯…

[C语言]程序设计(四)

大家好&#xff0c;这里是争做图书馆扫地僧的小白。非常感谢各位的支持&#xff0c;也期待着您的关注。 目前博主有着C语言、C、linux以及数据结构的专栏&#xff0c;内容正在逐步的更新。 希望对各位朋友有所帮助同时也期望可以得到各位的支持&#xff0c;有任何问题欢迎私信与…

计算机Java项目|SpringBoot+Vue实现的在线考试系统

项目编号&#xff1a;L-BS-KS-02 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 基于SpringBootVue的在线考试…

面试算法97:子序列的数目

题目 输入字符串S和T&#xff0c;请计算字符串S中有多少个子序列等于字符串T。例如&#xff0c;在字符串"appplep"中&#xff0c;有3个子序列等于字符串"apple" 分析 为了解决这个问题&#xff0c;每步从字符串S中取出一个字符判断它是否和字符串T中的…

Pytorch的GPU版本安装,在安装anaconda的前提下安装pytorch

本文基于conda安装GPU版本的PyTorch 一、CUDA 1.下载CUDA 点击下载 找到对应的版本进行下载 &#xff08;1&#xff09;打开命令提示符查看自己的版本&#xff0c;输入 nvidia-smi 根据自己的版本进行下载 &#xff08;2&#xff09;点击适合自己的版本进行下载 &#…

开发实践 | MySQL的Explain工具

&#x1f4eb; 作者简介&#xff1a;「子非我鱼」&#xff0c;专注于研究全栈 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注、&#x1f44d;点赞、&#x1f449;收藏三连&#xff0c;支持一下博主~ 文章目录 引言1&#xff0c;Explain工具介绍2&#xff0c;基本语法3&…

数字逻辑电路入门:从晶体管到逻辑门

数字逻辑电路入门&#xff1a;从晶体管到逻辑门 这是数字逻辑电路中最基础的部分。但是并非那么容易理解。 1、晶体管 mosfet&#xff1a;场效应晶体管&#xff0c;是电压控制元件。cmos&#xff1a;是指由mos管构成的门级电路通常是互补的。BJT&#xff1a;一种三极管&…