java计算器类方法_java类计算器

针对计算各种基类或者出现子类的次数,写了一个通用的计算方法。

简单原理就是hashMap ,遇到还有基类的话就递归

package tween; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class TypeCounter extends HashMap,Integer>{ private Class> baseType; public TypeCounter(Class> baseType){ this.baseType = baseType; } public void count(Object obj){ Class> type = obj.getClass(); if(!baseType.isAssignableFrom(type)){ throw new RuntimeException(); } countClass(type); } private void countClass(Class> type) { // TODO Auto-generated method stub Integer i = get(type); System.out.println(i+"========="+type); put(type,i==null?1:++i); Class> paretType  = type.getSuperclass(); if(paretType!=null&&baseType.isAssignableFrom(paretType)){ countClass(paretType); } } public String toString(){ StringBuilder sb  =new StringBuilder("{"); for(Map.Entry,Integer> p:entrySet()){ sb.append(p.getKey().getSimpleName()); sb.append("="); sb.append(p.getValue()); sb.append(", "); } sb.delete(sb.length()-2, sb.length()); sb.append("}"); return sb.toString(); } public static void main(String[] args) { TypeCounter type = new TypeCounter(A1.class); List list = Arrays.asList(new A1(),new A1(),new A3(),new A1(),new A2(),new A3()); for(A1 a:list){ type.count(a); } System.out.println(type); List> lists = new ArrayList();   }     } class A1{} class A2 extends A1{} class A3 extends A1{}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值