昨天晚上看到一道java笔试题,然后觉得挺有意思的。
题目如下:
写一个java程序,实现对一个二维数组按指定的列集进行排序。要求实现类似sql中order by的功能,移动时,整行移动,不能打乱整行顺序。
可将二维数组想象成数据库里的一个表记录集,然后按指定的列集进行排序,即order by col1,col2。
以下是我写的代码:
public class SortedByCol {
private 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, 4, 56, 78, 12},
{ 26, 78, 2365, 78, 34, 256, 873 } };// 要排序的数组
private HashMap<Integer, List> nums;
private ArrayList<Integer> colist;
private ArrayList<Integer> sortedcolist;
private int col;
public SortedByCol(){
}
private void getCol(int col) {
// TODO Auto-generated method stub
colist = new ArrayList<Integer>();
for (Integer i : nums.keySet()) {
colist.add(nums.get(i).get(col));
}
}
@SuppressWarnings("unchecked")
private void colSort(){
sortedcolist = new ArrayList<Integer>();
sortedcolist = (ArrayList<Integer>) colist.clone();
System.out.println(sortedcolist);
Object[] sortedArray = sortedcolist.toArray(); //pay attention Object
Arrays.sort(sortedArray);
boolean flag = false;
for (Object value : sortedArray) {
if (colist.indexOf(value) != colist.lastIndexOf(value)) { //这里是判断那行重复的
if (!flag) {
flag = true;
for (Integer i : nums.keySet()) {
List li = nums.get(i);
if (li.get(col) == value) {
System.out.println(li);
}
}
}
} else {
int i = colist.indexOf(value);
List li = nums.get(i);
System.out.println(li);
}
}
}
public void sort(int col){
this.col = col;
// 把二维数组的每一行放入一个hashMap中,key:对应的行,value:对应的该行的数据(用
// 一个内部类list来保存
putArrayInHash();
//得到要排序的那一行的数据
getCol(col);
//进行排序
colSort();
}
private void putArrayInHash(){
nums = new HashMap<Integer, List>();
for (int i = 0; i < array.length; i++) {
List list = new List(i);
for (int j = 0; j < array[0].length; j++) {
list.put(array[i][j]);
}
nums.put(i, list);
}
}
private void test() {
System.out.println(array[1][2]);
}
public static void main(String[] args) {
SortedByCol s = new SortedByCol();
s.sort(6); //这里的6是表示选择的列
}
class List{
private ArrayList<Integer> li = new ArrayList<Integer>();
private int id;
public List(int id){
this.id = id;
}
public Integer get(int col) {
return li.get(col);
}
public void put(int j) {
li.add(j);
}
public String toString(){
StringBuilder sb = new StringBuilder();
for (Integer i : li) {
sb.append(' '+String.valueOf(i));
}
return sb.toString();
}
}
}
:)
分享到:
相关推荐
JAVA笔试题,面试题JAVA笔试题,面试题JAVA笔试题,面试题JAVA笔试题,面试题JAVA笔试题,面试题
1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、java面试题及答案 9、java面试题编程篇 10、Oracle面试...
java笔试题面试题java笔试题面试题java笔试题面试题java笔试题面试题java笔试题面试题java笔试题面试题
java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...
大唐电信JAVA笔试题面试题 27 西安电讯盈科java笔试题 27 华为Java笔试题: 28 Java多线程常见面试题 31 Java企业面试题整理集合(1) 34 Java企业面试题整理集合(2) 43 Java企业面试题整理集合(3) 55 Java企业面试题...
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
Java面试题以及答案整理
java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...
原创一道Java笔试面试题考考大家!附带答案!
java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,包括基础面试题、JavaWeb面试题、JAVA面试题集.txt、分布式相关面试题...
java试题 java笔试题 java面试题java试题 java笔试题 java面试题
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张...
JAVA面试笔试题大汇总JAVA面试笔试题大汇总JAVA面试笔试题大汇总JAVA面试笔试题大汇总JAVA面试笔试题大汇总JAVA面试笔试题大汇总JAVA面试笔试题大汇总,JAVA面试笔试题大汇总JAVA面试笔试题大汇总
Java面试笔试题大汇总(最全+详细答案) Java面试笔试题大汇总(最全+详细答案)
Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...
文思 笔试题 Java 面试题 文思 笔试题 Java 面试题
Java面试题笔试题大全:Java面试题笔试题大全.chm