如何将char类型与Object类型进行比较

*** 在做题的时候发现, 通过.toArray() 方法生成的数组为Object类型, 即便需要比较的对象同样是char类型生成的set集合, 但仍无法将新数组与老char数组直接比较.

** Object 类型不好直接转成char, 因此思路是将Object 和 char 都转换为String类型,再通过equals方法进行比较

* 在后面将提供一个案例, 统计字符串"abcdaabbddefc"中各个字母共出现过几次.


假设Object类型的元素为 a,

       String temp1 =  a.toString();          // 就可以转换为String 类型.

假设char类型元素为c,

      String temp2  =  String.valueOf(c);        //可以实现将c转换为String类型

通过equals()方法实现比较

        boolean f  = temp1.equals(temp2);


public class Demo04 {

	public static void main(String[] args) {
        //统计字符串中各个字母共出现过几次
		String str = "abcdaabbddefc";
		
		char[] arr = str.toCharArray();
		//使用set集合可以去重复
		//使用数组遍历, 将char元素添加到set集合
		HashSet<Character> set = new HashSet<Character>();
		for (char c : arr) {
			set.add(c);
		}
		//得到了一个set集合,集合长度set.size();
		Object[] brr = set.toArray();
		
		//如何统计出现的次数, 首先需要知道有哪几个字母(brr[i]),然后遍历arr数组,判断是否相等,并计数
		//brr是Object类, arr是char类, 需要进行转换
		//将Object转成String  brr[i].toString();
		//将arr转换成String  String.valueOf(arr[i]);
		//新的问题是计数,仍需要一个循环对计数,使得count的数量与set.size()相等
        //将计数count放在第一次循环内
		HashMap<Object,Integer>map=new HashMap<Object,Integer>();
		
		for (int i = 0; i < brr.length; i++) {
			int count =0;
			for (int j = 0; j < arr.length; j++) {
				String temp = String.valueOf(arr[j]);
				if (temp.equals(brr[i].toString())) {
					count++;
				}
			}
			map.put(brr[i], count);
			
		}
		System.out.println(map);
	}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值