问题描述:

我希望能够使用从另一个类传入的函数的ArrayList(其中函数已在其他类中定义).如果在一个类中定义了可能具有不同输入和返回类型的函数列表,我希望能够将其中一些的ArrayList(可能有重复项)作为参数传递给其他类的构造函数或方法,使用它们执行操作.

代码说明:

下面的代码是一个非常简化的示例,从设计的角度来看并不是很有意义.问题的焦点是SomeClass中的方法getResult(),以及一旦拥有它们,通常如何使用函数的ArrayList.

尝试解决问题:

getResult()方法实现是使用函数列表的许多尝试之一的示例.再次,请不要介意代码的设计.它就是这样做的,试图让问题的例子尽可能短.

简单的测试类

package com.Testing;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

import java.util.function.Function;

public class Tester {

public static void main(String[] args)

{

// Some functions

Function increment = (Integer input) -> {

return input + 1;

};

Function decrement = (Integer input) -> {

return input - 1;

};

Function timesPi = (Double input) -> {

return input * 3.14;

};

// list of Functions

List availableMathOperations = new ArrayList<>();

List selectedMathOperations = new ArrayList<>();

// populate master list

availableMathOperations.add(increment);

availableMathOperations.add(decrement);

availableMathOperations.add(timesPi);

// Populate random selection list //

// generate random binary number

Random randomGenerator = new Random();

int randomNumber = randomGenerator.nextInt(availableMathOperations.size() * 2);

boolean[] bits = new boolean[availableMathOperations.size()];

for (int j = 0; j < availableMathOperations.size(); j++) {

bits[availableMathOperations.size() - 1 - j] = (1 << j & randomNumber) != 0;

}

// add math operations to selectedMathOperations based on binary number

for (int j = 0; j < bits.length; j++) {

if (bits[j]){

selectedMathOperations.add(availableMathOperations.get(j));

}

}

SomeClass someClass = new SomeClass(selectedMathOperations, 1.23);

}

}

其他课程

package com.Testing;

import java.util.List;

import java.util.function.Function;

public class SomeClass {

List operations;

double initialValue;

public SomeClass(List newOperations, double newInitialValue){

operations = newOperations;

initialValue = newInitialValue;

}

public double getResult(){

double result = 0.0;

// problem method

// perform the random list of operations using the initial value initially

for(int i = 0; i < operations.size(); i++){

if(i == 0)

result = operations.get(i)(initialValue);

else

result += operations.get(i)(result);

}

return result;

}

}

java arraylist 函数_使用Java-8中的函数ArrayList相关推荐

  1. python的matplotlib库内的函数_如何在matplotlib中找到函数下面的区域?

    我是python和matplotlib库的新手,我试图在绘图中得到函数行下方的区域.我有一个变量a&amp:b,它在我的绘图中移动一个矩形.我也许可以使用原始数学来解决这个问题,但我想知道是否 ...

  2. java中parseint函数_浅谈 js中parseInt函数的解析

    首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...

  3. matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...

    (一)运行时间 1.tic和toc组合 计算daotic和toc之间那专段程序之间的属运行时间,它的经典格式为 : tic 函数 toc 复制函数代码,当代码遇到tic时Matlab自动开始计时,运行 ...

  4. bash中的grep函数_如何在Bash中编写函数

    bash中的grep函数 在编程时,实际上是在定义要由计算机执行的过程或例程 . 一个简单的类比将计算机编程与烤面包进行比较:您一次列出了要设置工作环境的成分,然后列出了最终要面包所必须采取的步骤. ...

  5. python with函数_详解Python中startswith()函数与endswith函数的使用方法

    下面小编就为大家带来一篇老生常谈Python startswith()函数与endswith函数.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 函数:startswit ...

  6. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

  7. matlab中floor函数,floor函数_怎么在excel中使用floor函数

    floor函数即上取整函数,是计算机C语言中的数学函数,与ceil函数相对应.但是它在excel中却是另一种含义,FLOOR函数是向下舍入为最接近指数基数的倍数,下面小编就教你怎么在excel中使用f ...

  8. 数据库创建函数_达梦数据库创建UUID函数

    数据库创建函数_达梦数据库创建UUID函数 接触达梦数据库有一段时间了,整理了一些资料,今天分享一下达梦数据UUID自定义函数 UUID函数定义 很多数据库都有提供UUID函数,可是接触达梦数据库后, ...

  9. swap函数_[C++基础入门] 6、函数

    点击上方 蓝字 关注我呀! [C++基础入门] 6.函数 文章目录 6 函数 6.1 概述 6.2 函数的定义 6.3 函数的调用 6.4 值传递 6.5 函数的常见样式 6.6 函数的声明 6.7 ...

  10. matlab roundn函数_columns函数的使用方法 matlab中round函数具体用法

    Excel中column函数的使用方法是什么?其实小编会说分手是想被挽留,你却顺口祝小编自由. 只读属性,返回 TextStream 文件中当前字符位置的列号. 语法: =Column(referen ...

最新文章

  1. phonegap调用摄像头
  2. java输出回文数原代码_JAVA怎么用循环语句编写一个判别是否为回文数的代码?...
  3. POJ-1384 Piggy-Bank 多重背包变形
  4. 面试官问单表数据量大一定要分库分表吗?我们用六个字和十张图回答
  5. 数据结构思维 第九章 `Map`接口
  6. mysql开启binlog日志影响性能吗_mysql binlog日志优化及思路
  7. 第 2 章 类加载子系统
  8. Erlang编程语言的一些痛点
  9. js+canvas绘制360加速球
  10. [Campus]我的大学
  11. 沸腾新十年 | 中国语音产业江湖和科大讯飞的前半生...
  12. 出家12年,北大数学天才柳智宇下山还俗:从事心理咨询,主动要求降薪至2万...
  13. 整理总结:英语口语发音技巧
  14. linux ping -w 命令,Linux ping 命令
  15. 打印纸张规格“XXX”不见了
  16. 灵性图书馆:好书推荐-《把好运吸过来》
  17. 除了 xshell,还有什么类似的好用的软件
  18. MT4电脑版下载和安装
  19. 《权威指南》笔记 - 9.1-9.2 类和原型、构造函数
  20. s3c2440 IIC AT24C08 (II)非中断模式

热门文章

  1. python安装步骤3.7.2-linux环境安装python3.7.2
  2. python培训班哪些比较好-在线Python编程培训哪家机构比较好?
  3. python画图代码星星-Python打印“菱形”星号代码方法
  4. 脚本编程语言python语言-python语言是脚本语言吗
  5. 零基础python从入门到精通 pdf-跟老齐学Python从入门到精通
  6. python现在好找工作吗-学完Python好找工作吗?为什么有人学完找不到工作?
  7. python英语单词大全-使用Python进行英文单词分割
  8. python第三方库是什么意思-Python最强大的第三方库,你有必要了解一下!
  9. 精通python设计模式-浅谈Python设计模式 - 原型模式
  10. 学python就业要看哪些书-学习Python适合就业哪些岗位?老男孩Python学习