MAP集合练习题

package demo;

import java.util.*;
import java.util.function.Consumer;

/*创建一个银行用户 BankUser 类,
用户信息为用户 id、
用户名 userName、
余额 balance;
(1) 利用 HashMap 存储用户信息:
id 作为键,
用户作为值,
创建多个用户对象进行存储
(2) 遍历打印输出所有银行的用户名和对应的余额
(3) 键盘输入一个用户名,检测是否存在此用户,存在-打印用户信息;不存在-打印查无此人
 (4) 打印输出余额大于 200000 的用户信息*/
public class Test18 {
    public static void main(String[] args) {
        //创建BankUser类对象
        BankUser bankUser =  new BankUser(1,"二狗",3500D);
        BankUser bankUser1 = new BankUser(2,"翠花",4500000D);

        //创建map集合
        Map<Integer,BankUser> map = new HashMap<>();
        map.put(bankUser.getId(),bankUser);
        map.put(bankUser1.getId(),bankUser1);

        //根据key值遍历map集合
        Set<Integer> set = map.keySet();
        for (Integer integer : set) {
            System.out.println(map.get(integer));
        }

        System.out.println("--------------------------");
        //(3) 键盘输入一个用户名,检测是否存在此用户,存在-打印用户信息;不存在-打印查无此人
        //设定Scanner类
        Scanner sc = new Scanner(System.in);
        //打印提示语句
        System.out.println("输入需要查询的名字");

        String sr = sc.next();
        boolean bo = false;
        //遍历map集合
        for (Integer integer : set) {
            if (sr.equals(map.get(integer).getUserName())){
                bo = true;
                System.out.println(map.get(integer));
            }
        }
        if (bo==false) System.out.println("没有这个人!滚!");


        System.out.println("------------------------------");
        //打印输出余额大于 200000 的用户信息*/
        //遍历map集合
        set.forEach(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) {
                if (map.get(integer).getBalance()>200000){
                    System.out.println(map.get(integer));
                }
            }
        });
    }
}
//穿件BankUser类
class BankUser{
    private Integer id;
    private String userName;
    private Double balance;

    public BankUser() {
    }

    public BankUser(Integer id, String userName, Double balance) {
        this.id = id;
        this.userName = userName;
        this.balance = balance;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Double getBalance() {
        return balance;
    }

    public void setBalance(Double balance) {
        this.balance = balance;
    }

    @Override
    public String toString() {
        return "BankUser{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", balance=" + balance +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        BankUser bankUser = (BankUser) o;
        return Objects.equals(id, bankUser.id) &&
                Objects.equals(userName, bankUser.userName) &&
                Objects.equals(balance, bankUser.balance);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, userName, balance);
    }
}
Java集合框架是Java编程中非常重要的部分,它提供了一系列用于管理对象集合和接口。以下是一些关于Java集合框架的练习题及其详细解答,涵盖List、Set、Map等核心接口的应用。 ### 习题一:List集合操作 **题目:** 编写一个Java程序,创建一个`ArrayList`,并向其中添加5个字符串元素。然后,实现一个方法,将该列表中的元素反转,并输出反转前和反转后的内容。 **答案:** ```java import java.util.ArrayList; import java.util.List; public class ReverseListExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry"); list.add("date"); list.add("elderberry"); System.out.println("反转前:" + list); reverseList(list); System.out.println("反转后:" + list); } public static <E> void reverseList(List<E> list) { for (int i = 0; i < list.size() / 2; i++) { E temp = list.get(i); list.set(i, list.get(list.size() - 1 - i)); list.set(list.size() - 1 - i, temp); } } } ``` ### 习题二:Set集合去重 **题目:** 使用`HashSet`存储一组整数,并确保集合中没有重复的元素。编写代码验证这一点,并输出最终的集合内容。 **答案:** ```java import java.util.HashSet; import java.util.Set; public class UniqueSetExample { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); set.add(10); set.add(20); set.add(30); set.add(20); // 重复元素,不会被添加 System.out.println("Set集合内容:" + set); } } ``` ### 习题三:Map集合操作 **题目:** 创建一个`HashMap`,存储学生的姓名和对应的分数。要求实现以下功能: 1. 添加三个学生信息; 2. 修改某个学生的分数; 3. 删除一个学生; 4. 遍历并输出所有学生的信息。 **答案:** ```java import java.util.HashMap; import java.util.Map; public class StudentScores { public static void main(String[] args) { Map<String, Integer> studentMap = new HashMap<>(); // 添加学生信息 studentMap.put("Alice", 85); studentMap.put("Bob", 90); studentMap.put("Charlie", 78); // 修改分数 studentMap.put("Alice", 95); // 删除学生 studentMap.remove("Charlie"); // 遍历输出 System.out.println("学生信息:"); for (Map.Entry<String, Integer> entry : studentMap.entrySet()) { System.out.println(entry.getKey() + " - " + entry.getValue()); } } } ``` ### 习题四:List与Set转换 **题目:** 给定一个包含重复元素的`List`,将其转换为一个`Set`以去除重复项,并输出转换前后的集合。 **答案:** ```java import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class ListToSetConversion { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("red"); list.add("green"); list.add("blue"); list.add("red"); // 重复元素 Set<String> set = new HashSet<>(list); System.out.println("原始List:" + list); System.out.println("转换后的Set:" + set); } } ``` ### 习题五:使用Iterator遍历集合 **题目:** 使用`Iterator`遍历一个`ArrayList`,并删除其中所有值为"delete"的元素。 **答案:** ```java import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("keep"); list.add("delete"); list.add("retain"); list.add("delete"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { if ("delete".equals(iterator.next())) { iterator.remove(); } } System.out.println("清理后的列表:" + list); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值