【Java刷题进阶】基础入门篇⑨

简介: 【Java刷题进阶】基础入门篇⑨

第一题:统计一句话中重复单词的个数


题目描述


统计控制台输入的一句话中不同字⺟字符出现的次数。例如:现有字符串"Hello World!",上述字符串中各个字符的出现的次数为:

H:1

e:1

l:3

o:2

W:1

r:1

d:1

(不考虑数字、空格和特殊字符的个数,按照字符在字符串中出现的顺序显示。相同字母的大小写算两个不同字符)

输入描述:

控制台任意输入一段话,可以有空格和特殊符号

输出描述:

输出字符和字符对应的出现字数(字符和出现次数之间用:隔开,输出逻辑已经给出)

示例


输入: Hello World

输出:

H:1

e:1

l:3

o:2

W:1

r:1

d:1

题解


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
 line = line.replaceAll("[^a-zA-Z]", "");
for (int i = 0; i < line.length(); i++) {
    char c = line.charAt(i);
    if (map.containsKey(c)) {
        map.put(c, map.get(c) + 1);
    } else {
        map.put(c, 1);
    }
}
        //write your code here......
        Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
        for (Map.Entry<Character, Integer> entry : entrys) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}


第二题:map简单应用


题目描述


现在有一个map集合如下:

Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, “Amy”);
map.put(2, “Joe”);
map.put(3, “Tom”);
map.put(4, “Susan”);

要求:

1.遍历集合,并将序号与对应人名打印。
    2.向该map集合中插入一个编码为5姓名为控制台输入的人名的信息
    3.移除该map中的编号为4的信息
    4.将map集合中编号为3的姓名信息修改为"Tommy"
    5.再次遍历经过上述操作后的集合,并将序号与对应人名打印。(注:第一次输出和第二次输出需用空行隔开)

输入描述:

String类型人名

输出描述:

先将题中给定的集合遍历输出,完成题中要求之后再遍历输出一次(输出格式为key+“:”+value,第一次输出和第二次输出用空行隔开)

示例


输入: David

输出:

1:Amy

2:Joe

3:Tom

4:Susan

1:Amy

2:Joe

3:Tommy

5:David

题解


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner  = new Scanner(System.in);
        String name = scanner.next();
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "Amy");
        map.put(2, "Joe");
        map.put(3, "Tom");
        map.put(4, "Susan");
        for(Map.Entry<Integer, String> i: map.entrySet()) //输出原哈希表
            System.out.println(i.getKey() + ":" + i.getValue());
        System.out.println(); //空行
        map.put(5, name); //放入操作
        map.remove(4); //移除编号4
        map.replace(3, "Tommy"); //替换value值
        for(Map.Entry<Integer, String> i: map.entrySet()) //输出处理后的哈希表
            System.out.println(i.getKey() + ":" + i.getValue());
    }
}


第三题:集合排序


题目描述


有三个客户对象,将三个客户对象存入集合中,并将其按照消费总额从高到低排序

输入描述:

三个整数,分别代表三个客户的消费值

输出描述:

根据消费额从高到低排序后的集合(输出部分预设代码已经给出,为保证输出格式请不要随意更改)

示例


输入: 234 456 789
输出:
[Customer{name=‘小红’, consumption=789},Customer{name=‘小军’,
consumption=456}, Customer{name=‘小明’,consumption=234}]

题解


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Customer customer1 = new Customer("小明",scanner.nextInt());
        Customer customer2 = new Customer("小军",scanner.nextInt());
        Customer customer3 = new Customer("小红",scanner.nextInt());
        List<Customer> customers = new ArrayList<>();
        customers.add(customer1);
        customers.add(customer2);
        customers.add(customer3);
        //调用排序接口
        Collections.sort(customers);
        System.out.println(customers);
    }
}
class Customer implements Comparable<Customer>{
    private String name;
    private int consumption;
    public Customer(String name, int consumption) {
        this.name = name;
        this.consumption = consumption;
    }
    @Override
    public String toString() {
        return "Customer{" +
                "name='" + name + '\'' +
                ", consumption=" + consumption +
                '}';
    }
    //重写compareTo()方法,按照消费额从高到低排序
    @Override
    public int compareTo(Customer c){
        return c.consumption-consumption;
    }
}


目录
相关文章
|
16天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
33 0
|
16天前
|
Java
Java编程语言入门指南
Java编程语言入门指南
16 1
|
1天前
|
SQL Java 关系型数据库
零基础轻松入门Java数据库连接(JDBC)
零基础轻松入门Java数据库连接(JDBC)
6 0
|
1天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
6 0
|
2天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
3天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
26 1
|
4天前
|
Java 编译器 对象存储
java一分钟之Java入门:认识JDK与JVM
【5月更文挑战第7天】本文介绍了Java编程的基础——JDK和JVM。JDK是包含编译器、运行时环境、类库等的开发工具包,而JVM是Java平台的核心,负责执行字节码并实现跨平台运行。常见问题包括版本不匹配、环境变量配置错误、内存溢出和线程死锁。解决办法包括选择合适JDK版本、正确配置环境变量、调整JVM内存参数和避免线程死锁。通过代码示例展示了JVM内存管理和基本Java程序结构,帮助初学者更好地理解JDK和JVM在Java编程中的作用。
16 0
|
11天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
12天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1
|
12天前
|
Java 索引
JAVA刷题之数组的总结和思路分享
JAVA刷题之数组的总结和思路分享