Java 多维数组 按某列 排序
- public MetaCell[][] getByColumn(final int columnIndex, int decisionIndex) {//【注意】final咯
- MetaCell[][] array = new MetaCell[m][2];//Entry<MetaCell, MetaCell>参考http://blog.csdn.net/sunmenggmail/article/details/8952712 和 http://www.cnblogs.com/fstang/archive/2013/04/20/3032097.html
- for(int i=0; i<m; i++){
- array[i][0]=A[i][columnIndex];
- array[i][1]=A[i][decisionIndex];
- }
- Arrays.sort(array, new Comparator<MetaCell[]>(){//二维数组按照某列进行排序,你也可以采用Map
- public int compare(MetaCell[] o1, MetaCell[] o2) {//任何多维数组可看成一个一维数组,一维数组中每个元素是一个一维数组
- return o1[columnIndex].compareTo(o2[columnIndex]);//比较:大于0则表示升序
- }
- } );
- return array;
- }
以上默认升序。可修改Comparator接口即可。
以下是按多列排序【以第1列为准,第2列次之——当第一列出现相同值,用第2列排序】
import java.util.Arrays;
- import java.util.Comparator;
- public class ArraySort {
- public static void sort(int[][] ob, final int[] order) {
- Arrays.sort(ob, new Comparator<Object>() {
- public int compare(Object o1, Object o2) {
- int[] one = (int[]) o1;
- int[] two = (int[]) o2;
- for (int i = 0; i < order.length; i++) {
- int k = order[i];
- if (one[k] > two[k]) {
- return 1;
- } else if (one[k] < two[k]) {
- return -1;
- } else {
- continue; //如果按一条件比较结果相等,就使用第二个条件进行比较。
- }
- }
- return 0;
- }
- });
- }
- public static void main(String[] args) {
- int array[][] = new int[][] {
- { 12, 34, 68, 32, 9, 12, 545 },
- { 34, 72, 82, 57, 56, 0, 213 },
- { 12, 34, 68, 32, 21, 945, 23 },
- { 91, 10, 3, 2354, 73, 34, 18 },
- { 12, 83, 189, 26, 27, 98, 33 },
- { 47, 23, 889, 24, 899, 23, 657 },
- { 12, 34, 68, 343, 878, 235, 768 },
- { 12, 34, 98, 56, 78, 12, 546 },
- { 26, 78, 2365, 78, 34, 256, 873 } };
- sort(array, new int[] {0,1}); //先根据第一列比较,若相同则再比较第二列
- for (int i = 0; i < array.length; i++) {
- for (int j = 0; j < array[i].length; j++) {
- System.out.print(array[i][j]);
- System.out.print("\t");
- }
- System.out.println();
- }
- }
- }
Java 多维数组 按某列 排序的更多相关文章
- 三重for循环实现对二维数组的按列排序(JavaScript)
由C语言联想到的:三重for循环实现对二维数组的按列排序,并且牵扯到数据结构. 自己写的,水平有限,本文属于原创,可能存在错误,忘指正~ function circle() { var a = [ [ ...
- PHP 距离我最近排序+二维数组按指定列排序
思路: 1.获取我的位置,即:我的经纬度 2.各站点须有位置 即:排序对象有位置经纬度 3.查询要排序的站点列表 4.循环遍历计算 与我的距离 5.二维数组按 指定列(距离)排序 具体如下: ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
- PHP 二维数组根据某个字段排序
二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort 对数组的值按 ...
- JAVA二维数组的复制
JAVA二维数组的复制 笔者今天做一道ccf题目时,遇到要将二维数组拷贝复制时,没有用常规的那种一个一个数的复制,用的是System.arraycopy()来进行复制,下面介绍这个函数的一些注意点: ...
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
- PHP 按二维数组的键值排序
/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...
- java 多维数组遍历
java 多维数组遍历的顺序的性能问题 ps:下图为java多维数组内存分布原理.出自:http://math.hws.edu/javanotes/c7/two-dimensional-array.p ...
随机推荐
- 面试相关的技术问题---java基础
最近在准备秋季校招,将一些常见的技术问题做一个总结!希望对大家有所帮助! 1.面向对象和面向过程的区别是什么? 面向对象是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描 ...
- 图解JVM在内存中申请对象及垃圾回收流程
http://longdick.iteye.com/blog/468368 先看一下JVM的内存模型: 从大的方面来讲,JVM的内存模型分为两大块: 永久区内存( Permanent space )和 ...
- java中数据类型及运算符的注意事项
数据类型: boolean 类型数据只允许取值true 或 false(不可以使用0 或非0的整数来代替true和false,区分于C语言). char:Java中用" \u四位十六进制的数 ...
- C#学习笔记(4)
今天先把上几个系列的做一个总结,在这里给出一个面向对象版的简易计算器(重在理解面向对象的思想). 1.首先定义一个计算器类(类库)(Calculator) public abstract class ...
- 在ARM Linux 使用 Valgrind
Linux valgrind 移植到ARM-Linux 一.Cross-Compile/交叉编译 (1)下载及解压Valgrind-3.11 (2)修改confirure 将armv7*)修改为ar ...
- JS脚本延时
JS脚本延时 function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7 ...
- linux相关解压命令
ZIP 我们可以使用下列的命令压缩一个目录: # zip -r archive_name.zip directory_to_compress 下面是如果解压一个zip文档: # unzip archi ...
- Google Map 自定义 infowindow
最近做的东西用到了infowindow,不过google提供的样式太难看了,于是想改变一下样式.看了一下好像infowindow的样式不太好改. 查了半天资料,看到一个infobox,感觉真的挺好用. ...
- php练习4——排序,查找
排序(从小到大) 查找 注:二分法查找的数组默认为已经排序的数组
- yum使用详细
1.使用YUM查找软件包 命令:yum search~ 2.列出所有可安装的软件包 命令:yum list 3.列出所有可更新的软件包 命令:yum list updates 4.列出所有已安装的软件 ...