第一题:统计一句话中重复单词的个数
题目描述
统计控制台输入的一句话中不同字⺟字符出现的次数。例如:现有字符串"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; } }