使用集合(HashMap、TreeMap)实现统计一个字符串中字符出现的次数

统计一个字符串中字符出现的次数

//作业:统计一个字符串中字符出现的次数
//使用HashMap完成

	public static void main(String[] args) {
		//统计一个字符串中每个字符出现的次数
		String str = "aaabbccm";
		//1.字符串转数组
		char [] arr = str.toCharArray();
		//2.创建map
		HashMap<Character,Integer> hm = new HashMap<>();
		//3.遍历数组key-value
		for (char c : arr) {
			//4.每取出一个元素,判断key是否存在
			if(!hm.containsKey(c)){
				//5.若不存在,存入key,value=1
				hm.put(c, 1);
			}else{
				//6.若存在,value+1
				hm.put(c, hm.get(c)+1);
			}
		}
		System.out.println(hm);
	}
public static void main(String[] args) {
		/**
		 * 统计字符串中各个字母出现次数:
		 * A(8),B(16),C(10)...,a(12),b(10),c(3)....中(5),国(6),
		 * 括号内代表字符出现次数,并按照字符出现大小排序
		 */
		//定义字符串
		String str = "Afafafafafaa我爱中国我爱千锋";
		//将字符串转为char类型
		char[] array = str.toCharArray();
		TreeMap<Character, Integer> map = new TreeMap<>();
		for (char c : array) {
			//判断该集合集合是否有key,没有获取的key就为null
			Integer num = map.get(c);
			if (num == null) {
				map.put(c, 1);
			}else {
				map.put(c, num+1);
			}
		}
		
		Set<Entry<Character,Integer>> entrySet = map.entrySet();
		for (Entry<Character, Integer> entry : entrySet) {
			Character key = entry.getKey();
			Integer value = entry.getValue();
			System.out.println(key+"("+value+")");
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是这些题目的Java代码实现: 1. 从命令行接收一组整数,将它们存储在一个ArrayList,并将其排序后打印出来: ```java import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class SortArrayList { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<>(); System.out.print("请输入一组整数,以空格分隔:"); String[] input = scanner.nextLine().split(" "); for (String str : input) { list.add(Integer.parseInt(str)); } Collections.sort(list); System.out.println("排序后的结果为:" + list); } } ``` 2. 从一个文件读取一组字符串,将它们存储在一个HashSet,并打印出所有不同的字符串: ```java import java.io.File; import java.io.FileNotFoundException; import java.util.HashSet; import java.util.Scanner; public class UniqueStrings { public static void main(String[] args) { HashSet<String> set = new HashSet<>(); try { Scanner scanner = new Scanner(new File("input.txt")); while (scanner.hasNext()) { set.add(scanner.next()); } System.out.println("不同的字符串有:" + set); } catch (FileNotFoundException e) { e.printStackTrace(); } } } ``` 3. 从一个文件读取一组字符串,将它们存储在一个HashMap,其键为字符串,值为出现次数。然后打印出每个字符串和它出现次数: ```java import java.io.File; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Scanner; public class StringCount { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<>(); try { Scanner scanner = new Scanner(new File("input.txt")); while (scanner.hasNext()) { String str = scanner.next(); if (map.containsKey(str)) { map.put(str, map.get(str) + 1); } else { map.put(str, 1); } } for (String str : map.keySet()) { System.out.println(str + " 出现了 " + map.get(str) + " 次"); } } catch (FileNotFoundException e) { e.printStackTrace(); } } } ``` 4. 从一个文件读取一组字符串,将它们存储在一个TreeMap,其键为字符串,值为出现次数。然后按照出现次数从高到低打印出所有字符串: ```java import java.io.File; import java.io.FileNotFoundException; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class StringCountSort { public static void main(String[] args) { TreeMap<String, Integer> map = new TreeMap<>(); try { Scanner scanner = new Scanner(new File("input.txt")); while (scanner.hasNext()) { String str = scanner.next(); if (map.containsKey(str)) { map.put(str, map.get(str) + 1); } else { map.put(str, 1); } } Map<Integer, String> reverseMap = new TreeMap<>(Collections.reverseOrder()); for (String str : map.keySet()) { reverseMap.put(map.get(str), str); } for (Integer count : reverseMap.keySet()) { System.out.println(reverseMap.get(count) + " 出现了 " + count + " 次"); } } catch (FileNotFoundException e) { e.printStackTrace(); } } } ``` 5. 将一个字符串的单词存储在一个LinkedList,并打印出它们的反转顺序: ```java import java.util.LinkedList; import java.util.Scanner; public class ReverseWords { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个字符串:"); String str = scanner.nextLine(); LinkedList<String> list = new LinkedList<>(); for (String word : str.split(" ")) { list.addFirst(word); } System.out.println("反转后的单词顺序为:" + list); } } ``` 希望这些代码能够帮助您练习Java集合使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值