项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.实现数值类型加法

实际开发中,经常有数值类型求和的需求,例如实现int类型的加法:

    public int add(int num1, int num2) {return num1 + num2;}

有时候还需要实现long类型的求和:

    public long add(long num1, long num2) {return num1 + num2;}

如果还需要double类型的求和,需要重新在重载一个输入是double类型的add方法。
其实逻辑都是一样的,只是输入参数类型不一样而已,正好在java中数值类型有个公共的父类:Number。所以我们可以这么做:

    public <T extends Number> double add(T t1, T t2) {double allsum;allsum = t1.doubleValue() + t2.doubleValue();return allsum;}@Testpublic void testAdd() {int int1 = 1;int int2 = 2;System.out.println("Integer sum is: " + add(int1, int2));long long1 = 100;long long2 = 200;System.out.println("Long sum is: " + add(long1, long2));float f1 = 1.0f;float f2 = 2.0f;System.out.println("Float sum is: " + add(f1, f2));double d1 = 1.0;double d2 = 2.0;System.out.println("Double sum is: " + add(d1, d2));}

将上述的test方法run起来以后,输出如下:

Integer sum is: 3
Long sum is: 300
Float sum is: 3.0
Double sum is: 3.0

2.实现数值类型集合的加法

上面是单个数值类型,推广一下,对于数值类型的集合来说,也经常会有类似的需求,这个时候我们可以也做类似的泛型方法:

public class GenericAdd {//extend限制返回时候的类型public static void sumlist(List<? extends Number> list) {double sum = 0.0;for(Number each : list) {sum += each.doubleValue();}double sum2 = list.stream().mapToDouble(x -> x.doubleValue()).sum();System.out.println(sum);System.out.println(sum2);}//super限制添加时候的类型public static void lowerBound(List<? super Number> list) {list.add(new Integer(1));list.add(new Float(2));Integer value1 = (Integer) list.get(0);Float value2 = (Float) list.get(1);System.out.println(value1 + "\t" + value2);}public static void main(String[] args) {List<Number> list = new ArrayList<>();lowerBound(list);System.out.println("---------");List<Integer> intList = new ArrayList(){{add(1); add(2); add(3);}};sumlist(intList);System.out.println("---------");List<Double> doubleList = new ArrayList(){{add(10.0); add(20.0); add(30.0);}};sumlist(doubleList);}}

上面代码的输出结果如下:

1    2.0
---------
6.0
6.0
---------
60.0
60.0

这样就达到了数值类型集合求和的需求!

java泛型方法实现数值类型加法相关推荐

  1. java poi设置单元格格式为数值,Apache POI 如何读取Excel中数值类型单元格所规定的保留小数位?...

    问题描述 java apache poi 包内是否有方法可以获取Excel数值类型单元格中保留的位数? 问题出现的环境背景及自己尝试过哪些方法 有这么一个场景: 需求:从Excel文件中读取数据,原样 ...

  2. java使用redis incr,JFinal Redis plugin 有关数值类型incr操作的bug

    先上测试代码:public class TestCache { private static final Cache testCache = Redis.use(CacheCons.TEST) ; p ...

  3. Java数值类型与补码关系讨论

    随着学习计算机知识的加深,许多地方都遇到原码.反码.补码.很多关于计算机的书籍都介绍原码.反码.补码的表示方法,但是为什么要用到原码.反码.补码却没详细说.为什么要使用?我们知道数值在计算机中表示形式 ...

  4. Java黑皮书课后题第2章:2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数

    2.18(打印表格)编写程序,显示下面的表格,将浮点数值类型转化为整数 题目 题目描述 代码 方法评价 化繁为简:强制(数据)类型转换 题目 题目描述 2.18(打印表格)编写程序,显示下面的表格,将 ...

  5. java byte 无符号类型_获取java byte的无符号数值

    byte a = (byte)234; System.out.println(a); 上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127. 如果想输出234,该 ...

  6. java使用POI导出Excel设置单元格格式为数值类型

    最近做项目遇到的坑,百度了半天导出都为货币类型.自定义类型和常规类型,,,最后终于解决,在此记录一下 其中contextstyle.setDataFormat(df.getFormat("0 ...

  7. python bool类型_Python 的内置数值类型

    Python 是一种敏捷的.动态类型化的.极富表现力的开源编程语言,可以被自由地安装到多种平台上.Python 代码是被解释的.如果您对编辑.构建和执行循环较为熟悉,则 Python 代码对您来说更简 ...

  8. python语言整数类型-Python 的内置数值类型

    Python 是一种敏捷的.动态类型化的.极富表现力的开源编程语言,可以被自由地安装到多种平台上.Python 代码是被解释的.如果您对编辑.构建和执行循环较为熟悉,则 Python 代码对您来说更简 ...

  9. java负数用什么类型定义_(转) Java中的负数及基本类型的转型详解

    (转) https://my.oschina.net/joymufeng/blog/139952 面这行代码的输出是什么? 下面两行代码的输出相同吗? 请尝试在Eclipse中运行上面的两个代码片段, ...

  10. java泛型之有界类型

    为什么80%的码农都做不了架构师?>>>    在前面的例子中,可以使用任意类替换类型参数.对于大多数情况这很好,但是限制能够传递给类型参数的类型有时是有用的.例如,假设希望创建一个 ...

最新文章

  1. Playing Video on iPhone Cocos2D-X
  2. 如何制作一个通用的多系统安装U盘七(Windows相关配置)
  3. 错误:cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”
  4. RFID中间件成为全球软件产业争夺新焦点
  5. Js中的callback机制
  6. Pytorch学习-Task1
  7. vuex的命名空间有哪些_Vue 3 带来的 Vuex 的替代方案
  8. 深入理解 PHP7 中全新的 zval 容器和引用计数机制
  9. ❤️六W字《计算机基础知识》(八)(建议收藏)❤️
  10. uniitest怎么传参数
  11. Bash-Shell-02
  12. 在 Win10 中配置 Linux 开发环境
  13. Effective Java (7) - 避免终止方法
  14. Vieux-部分型号iPhone\iPad\iPod降级工具使用教程
  15. 什么是DDD(领域驱动设计)?
  16. 计算机科学与技术b类大学名单,双一流a类大学和b类大学名单及学科
  17. 微信红包随机算法转载
  18. Android,上传一张本地图片到服务器,Okhttp的post请求上传图片本地服务器
  19. java bidi_Java Bidi isRightToLeft()用法及代码示例
  20. Windows系统共享文件夹或打印机等设备的dos脚本自动化

热门文章

  1. A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
  2. 用Wireshark轻松解密TLS浏览器流量
  3. RAC安装之一 安装前准备
  4. JDBC和数据库连接池的关系
  5. js 中 ! + - ~ 符号和匿名函数
  6. 一个简单的js作用域题目(原创)
  7. Iperf性能测试的问题小结
  8. Haskell分解质因数
  9. spring ORM管理
  10. python ConfigParser模块 配置文件解析