java代码实现mapreduce中的map、reduce、filter方法
时间:2019-01-18
本文章向大家介绍java代码实现mapreduce中的map、reduce、filter方法,主要包括java代码实现mapreduce中的map、reduce、filter方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实现代码如下:
public class MyList {
public static void main(String[] args) {
List<Integer> aa =new ArrayList<>();
aa.add(1);
aa.add(2);
aa.add(3);
oneselfList list=new oneselfList(aa);
// 调用map方法
System.out.println("调用map执行完成的结果");
list.map(new mymaps() {
@Override
public int maptest(int a) {
return a+1;
}
}).forEach(System.out::println);
// 调用reduce方法
System.out.println("调用reduce执行完成的结果");
int sum =list.reduce(new myreduce() {
@Override
public int reducetest(int a, int b) {
return a+b;
}
});
System.out.println(sum);
// 调用filter方法
System.out.println("调用filter执行完成的结果");
list.filtertest(new myfilter() {
@Override
public boolean filter(int a) {
return a>2;
}
}).forEach(System.out::println);
}
}
class oneselfList{
private List<Integer> list;
public oneselfList(List<Integer> alist){
this.list=alist;
}
public void add (int a){
list.add(a);
}
//map方法
public List<Integer> map(mymaps mapop){
List<Integer> newlist=new ArrayList<>();
for(Integer i : list){
newlist.add(mapop.maptest(i));
}
return newlist;
}
// reduce方法
public int reduce(myreduce reduce){
if(list.size()<2){
try {
throw new Exception("长度不够,无法进行聚合");
} catch (Exception e) {
e.printStackTrace();
}
}else{
int a=list.get(0);
int b=list.get(1);
int result=reduce.reducetest(a,b);
for(int i=2;i<list.size();i++){
result=reduce.reducetest(result,list.get(i));
}
return result;
}
return 0;
}
// filter方法
public List<Integer> filtertest(myfilter filter){
List<Integer> newlist=new ArrayList<>();
for(Integer i:list){
if(filter.filter(i)){
newlist.add(i);
}
}
return newlist;
}
}
interface mymaps{
int maptest(int i);
}
interface myreduce{
int reducetest(int a,int b);
}
interface myfilter{
boolean filter(int a);
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【Flutter Unit 重大更新 1 】超好用的组件收藏夹上线
- android特卖列表倒计时卡顿问题的解决方法
- dotnet 多线程禁止同时调用相同的方法 禁止方法重入调用 双检锁的设计
- android实现倒计时功能(开始、暂停、0秒结束)
- 【-Flutter/Dart 语法补遗-】 sync* 和 async* 、yield 和yield* 、async 和 await
- android实现条目倒计时功能
- Android实现简单手电筒功能
- k8s安装自动证书签发cert-manager letsencrypt
- Android仿Keep运动休息倒计时圆形控件
- android通过led实现手电筒功能
- Android 7.0 手电筒控制实现
- 【STM32H7】第13章 RL-TCPnet V7.X之创建多个TCP客户端
- Android倒计时的开始与停止 剩余时分秒的展示
- 由LFI引起的Zimbra邮件管理系统0day
- Android手电筒兼容各个手机与版本