二次排序工具类:

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 实现二次排序相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java 二叉堆_【数据结构】二叉堆:Java实现最大堆及堆排序

    堆在逻辑上一棵完全二叉树,所以可以通过数组进行数据存储,而其余的树大多采用链式结构进行数据存储 堆分类: 大顶堆:大顶堆就是无论在任何一棵(子)树中,父节点都是最大的 小顶堆:小顶堆就是无论在任何一棵 ...

  3. java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?

    我正在构建一个简单的 Java应用程序,涉及从csv文件中读取信息. csv文件中的信息以这种形式出现: "ID","Description" "AB ...

  4. java数组给名字排序_用Java给数组排序

    public class BubbleDemo { public static void main(String[] args) { int arr[]={1,3,5,7,2,4,6,8,9}; bu ...

  5. java util包排序_实现java.util.Comparator接口,对对象集合进行多属性组合排序

    Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("a ...

  6. java 外部排序_完整java实现外部排序

    外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的.选自百度百科. 第一步:      首先 ...

  7. java打印星型_初识java java入门知识 基础知识 打印各种星型图形 源代码

    今天给大家带来的是初级Java基础部分的知识:包括初识Java.变量.常量.数据类型.运算符.各种选择结构.循环结构.数组等Java的基础语法部分!最后还有****循环结构的进阶****,步骤超详细, ...

  8. java是什么格式_是java格式

    错误:编码GBK的不可映射字符的解决办法 最近在重新补javaSE的基础,编辑器编写完代码以后,在控制台运行代码段的时候,出现了以下的错误提示:错误:编码GBK的不可映射字符 在通过查询谷哥和度娘以后 ...

  9. java获取首字母_【Java】获取中文首字母

    获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...

  10. java程序设计模拟题_《Java程序设计》东师模拟题题目及答案

    <Java程序设计>东师模拟题题目及答案 2020-08-30 09:08:37 931 有学员问关于<Java程序设计>东师模拟题题目及答案的题目的参考答案和解析,具体如下: ...

最新文章

  1. EL:固氮能力主要取决于物种分类而不是土壤养分
  2. 微信小程序自定义select下拉选项框
  3. 深入分析八种前景看好的物联网业务形态
  4. gephi生成网络关系图_用 NetworkX + Gephi + Nebula Graph 分析lt;权力的游戏gt;人物关系(上)
  5. [knowledge][basic][hardware] 内存的硬件结构(转)
  6. Node.js API 全栈 开发框架
  7. UNIX高级环境编程(2)FIle I/O - 原子操作、共享文件描述符和I/O控制函数
  8. 苹果手机解压缩软件_「 神器 」用得贼舒服的压缩/解压缩工具
  9. 数字地-DGND与模拟-AGND地的大学问
  10. 电力系统计算机辅助分析知乎,电力系统计算机辅助分析
  11. Telink IDE 泰凌微IDE C语言静态库的生成和使用
  12. UFS Host Controller工作流程
  13. bde怎么配置oracle数据库,Oracle数据访问组件ODAC教程:如何从BDE和DOA迁移
  14. EasyExcel的简单读取操作
  15. HPP(Hosted Payment Page)支付模式
  16. 苹果xsmax怎么开机_苹果XSMAX手机进水不开机怎么办?看小伙如何完美修复!
  17. 在不停业务的情况下重启ES集群中的节点
  18. 全球变暖,人类何去何从?
  19. 关键词下降应该怎么办?
  20. 动手制作属于你自己的WIN PE3.0

热门文章

  1. 服务器为什么进入pe找不到硬盘,进PE系统找不到硬盘怎么办?看电脑大神怎么做的!...
  2. php 重命名 漏洞,上传漏洞[汇总]
  3. Java 算法 能量项链
  4. Java 算法 P1003
  5. 鸿蒙硬件HI3861开发环境搭建-串口2测试
  6. Java中反射主要应用在哪里_Java学习:反射的应用场景和解析方法
  7. 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
  8. java httppost 400_java – HTTP状态400 – 必需字符串参数’walletName’不存在
  9. nginx 反向代理之 proxy_redirect
  10. 通俗理解TCP握手次数是三次?