java二次排序_使用java 实现二次排序
二次排序工具类:
import java.io.Serializable;
import scala.math.Ordered;
/**
* @author 作者 E-mail:
* @version 创建时间:2017年8月30日 下午3:48:11
* 类说明
*/
//二次排序key
public class SecondeIndexSort implements Ordered, Serializable{
private static final long serialVersionUID = -2366006422945129991L;
// 首先在自定义key里面,定义需要进行排序的列
private int first;
private int second;
public SecondeIndexSort(int first, int second) {
this.first = first;
this.second = second;
}
@Override
public boolean $greater(SecondeIndexSort other) {
if(this.first > other.getFirst()) {
return true;
} else if(this.first == other.getFirst() &&
this.second > other.getSecond()) {
return true;
}
return false;
}
@Override
public boolean $greater$eq(SecondeIndexSort other) {
if(this.$greater(other)) {
return true;
} else if(this.first == other.getFirst() &&
this.second == other.getSecond()) {
return true;
}
return false;
}
@Override
public boolean $less(SecondeIndexSort other) {
if(this.first < other.getFirst()) {
return true;
} else if(this.first == other.getFirst() &&
this.second < other.getSecond()) {
return true;
}
return false;
}
@Override
public boolean $less$eq(SecondeIndexSort other) {
if(this.$less(other)) {
return true;
} else if(this.first == other.getFirst() &&
this.second == other.getSecond()) {
return true;
}
return false;
}
@Override
public int compare(SecondeIndexSort other) {
if(this.first - other.getFirst() != 0) {
return this.first - other.getFirst();
} else {
return this.second - other.getSecond();
}
}
@Override
public int compareTo(SecondeIndexSort other) {
if(this.first - other.getFirst() != 0) {
return this.first - other.getFirst();
} else {
return this.second - other.getSecond();
}
}
// 为要进行排序的多个列,提供getter和setter方法,以及hashcode和equals方法
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + first;
result = prime * result + second;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SecondeIndexSort other = (SecondeIndexSort) obj;
if (first != other.first)
return false;
if (second != other.second)
return false;
return true;
}
}
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;
/**
* @author 作者 E-mail:
* @version 创建时间:2017年8月30日 下午4:26:10
* 类说明
*/
public class SortIndexByKey {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("sortAction").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD tf = sc.textFile("G://122.txt");
JavaPairRDD mapToPair = tf.mapToPair(new PairFunction() {
private static final long serialVersionUID = 1L;
@Override
public Tuple2 call(String paramT) throws Exception {
String[] lines = paramT.trim().split(" ");
System.out.println("keys..."+Integer.valueOf(lines[0]));
System.out.println("keys1..."+Integer.valueOf(lines[1]));
SecondeIndexSort keys = new SecondeIndexSort(
Integer.valueOf(lines[0]),
Integer.valueOf(lines[1]));
return new Tuple2(keys, paramT);
}
});
JavaPairRDD sortByKey = mapToPair.sortByKey();
JavaRDD map = sortByKey.map(new Function, String>() {
private static final long serialVersionUID = 1L;
@Override
public String call(Tuple2 paramT1) throws Exception {
return paramT1._2;
}
});
map.foreach(new VoidFunction() {
private static final long serialVersionUID = 1L;
@Override
public void call(String paramT) throws Exception {
System.out.println("..."+paramT);
}
});
sc.close();
}
}
测试数据:
1 4
3 4
4 6
4 9
4 18
6 6
5 9
8 9
8 9
4 6
原文:http://www.cnblogs.com/ptbx/p/7458029.html
java二次排序_使用java 实现二次排序相关推荐
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java 二叉堆_【数据结构】二叉堆:Java实现最大堆及堆排序
堆在逻辑上一棵完全二叉树,所以可以通过数组进行数据存储,而其余的树大多采用链式结构进行数据存储 堆分类: 大顶堆:大顶堆就是无论在任何一棵(子)树中,父节点都是最大的 小顶堆:小顶堆就是无论在任何一棵 ...
- java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?
我正在构建一个简单的 Java应用程序,涉及从csv文件中读取信息. csv文件中的信息以这种形式出现: "ID","Description" "AB ...
- java数组给名字排序_用Java给数组排序
public class BubbleDemo { public static void main(String[] args) { int arr[]={1,3,5,7,2,4,6,8,9}; bu ...
- java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序
Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...
- java 外部排序_完整java实现外部排序
外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的.选自百度百科. 第一步: 首先 ...
- java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码
今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...
- java是什么格式_是java格式
错误:编码GBK的不可映射字符的解决办法 最近在重新补javaSE的基础,编辑器编写完代码以后,在控制台运行代码段的时候,出现了以下的错误提示:错误:编码GBK的不可映射字符 在通过查询谷哥和度娘以后 ...
- java获取首字母_【Java】获取中文首字母
获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...
- java程序设计模拟题_《Java程序设计》东师模拟题题目及答案
<Java程序设计>东师模拟题题目及答案 2020-08-30 09:08:37 931 有学员问关于<Java程序设计>东师模拟题题目及答案的题目的参考答案和解析,具体如下: ...
最新文章
- EL:固氮能力主要取决于物种分类而不是土壤养分
- 微信小程序自定义select下拉选项框
- 深入分析八种前景看好的物联网业务形态
- gephi生成网络关系图_用 NetworkX + Gephi + Nebula Graph 分析lt;权力的游戏gt;人物关系(上)
- [knowledge][basic][hardware] 内存的硬件结构(转)
- Node.js API 全栈 开发框架
- UNIX高级环境编程(2)FIle I/O - 原子操作、共享文件描述符和I/O控制函数
- 苹果手机解压缩软件_「 神器 」用得贼舒服的压缩/解压缩工具
- 数字地-DGND与模拟-AGND地的大学问
- 电力系统计算机辅助分析知乎,电力系统计算机辅助分析
- Telink IDE 泰凌微IDE C语言静态库的生成和使用
- UFS Host Controller工作流程
- bde怎么配置oracle数据库,Oracle数据访问组件ODAC教程:如何从BDE和DOA迁移
- EasyExcel的简单读取操作
- HPP(Hosted Payment Page)支付模式
- 苹果xsmax怎么开机_苹果XSMAX手机进水不开机怎么办?看小伙如何完美修复!
- 在不停业务的情况下重启ES集群中的节点
- 全球变暖,人类何去何从?
- 关键词下降应该怎么办?
- 动手制作属于你自己的WIN PE3.0
热门文章
- 服务器为什么进入pe找不到硬盘,进PE系统找不到硬盘怎么办?看电脑大神怎么做的!...
- php 重命名 漏洞,上传漏洞[汇总]
- Java 算法 能量项链
- Java 算法 P1003
- 鸿蒙硬件HI3861开发环境搭建-串口2测试
- Java中反射主要应用在哪里_Java学习:反射的应用场景和解析方法
- 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
- java httppost 400_java – HTTP状态400 – 必需字符串参数’walletName’不存在
- nginx 反向代理之 proxy_redirect
- 通俗理解TCP握手次数是三次?