要求:
Add a new method sort(String columnName,boolean order) to WMDataSet.
This method should efficiently sort the rows by the column name passed and in the specified order (ascending\descending)import java.util.ArrayList;
import java.util.List;public class WMDataSet
{
private List<List<Object>> rows;
private List<String> colNames;
public WMDataSet()
{
this.rows = new ArrayList<List<Object>>();
this.colNames = new ArrayList<String>();
}
public WMDataSet(String [] colNames)
{
this();
for (String colName : colNames)
{
this.colNames.add(colName);
}
}
public List<List<Object>> getRows()
{
return rows;
}
public List<String> getColNames()
{
return colNames;
}
public void clear ()
{
for (List<Object> row : rows)
{
row.clear();
}
rows.clear();
colNames.clear();
}
public void sort(String columnName,boolean order)
{
//TODO
//Logic is here
}
}满分奉上。3ks all!
Add a new method sort(String columnName,boolean order) to WMDataSet.
This method should efficiently sort the rows by the column name passed and in the specified order (ascending\descending)import java.util.ArrayList;
import java.util.List;public class WMDataSet
{
private List<List<Object>> rows;
private List<String> colNames;
public WMDataSet()
{
this.rows = new ArrayList<List<Object>>();
this.colNames = new ArrayList<String>();
}
public WMDataSet(String [] colNames)
{
this();
for (String colName : colNames)
{
this.colNames.add(colName);
}
}
public List<List<Object>> getRows()
{
return rows;
}
public List<String> getColNames()
{
return colNames;
}
public void clear ()
{
for (List<Object> row : rows)
{
row.clear();
}
rows.clear();
colNames.clear();
}
public void sort(String columnName,boolean order)
{
//TODO
//Logic is here
}
}满分奉上。3ks all!
解决方案 »
- 求一个设计比较好得JDBC的代码!
- 真心求帮助,这是我所有的分了。。。JAVA 关于部件的布局问题。。
- 大神们 问个问题 如何交换两个JtextArea中的数据
- 如何将JTable 设置为不可用,就像JButton一样能够变灰??
- JDBC使用的DBMS驱动是不是都是DBMS生产厂商提供的阿?
- 如何用java对需要用户登录后才可访问的网站进行信息提取?
- 新手请教jbuider9的问题
- Java Plug-in(Java插件)是做什么用的呢?
- jbuilder菜鸟问题?
- 现在学java还有没有必要?
- 高手帮我写个正则
- java 正则表达式 怎么匹配HTML中,不包含在a标签中的img标签,并且捕获img标签src=""中双引号的值
private List<List<Object>> rows;
private List<String> colNames;
这两个的一一对应,
可以考虑以这两个生成个HashMap<String, List<Object>>然后以colNames排序后,数组化,直接用Arrays.sort()方法排序
再把以前数据先clear掉,再依次(就是排好序的数组)从HashMap中加入到 rows和colNames中
for (int i=0;i<colNames.size();i++) {
//找到columnName是哪一列
if (columnName.equals(colNames.get(i))) {
//根据你有多少行数据初始化一个排序用数组
Object[] datas = new Object[rows.size()];
HashMap<Object, List<Object>> map = new HashMap<Object, List<Object>>();
for (int j=0;j<rows.size();j++) {
map.put(rows.get(j).get(i), rows.get(j));
//map里的key是每一行需要排序列的对象,value是每一行的数据
datas[j] = rows.get(j).get(i);
}
Arrays.sort(datas);
rows.clear();
if (order) {//升序
for (int j=0;j<datas.length;j++) {
rows.add(map.get(datas[j]));
}
} else {//降序
for (int j=datas.length-1;j>=0;j--) {
rows.add(map.get(datas[j]));
}
}
break;
}
}
}
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Random;public class WMDataSet
{
private List<List<Object>> rows;
private List<String> colNames;
public WMDataSet()
{
this.rows = new ArrayList<List<Object>>(0);
this.colNames = new ArrayList<String>(0);
}
public WMDataSet(String [] colNames)
{
this();
for (String colName : colNames)
{
this.colNames.add(colName);
}
}
public List<List<Object>> getRows()
{
return rows;
}
public List<String> getColNames()
{
return colNames;
}
public void clear ()
{
for (List<Object> row : rows)
{
row.clear();
}
rows.clear();
colNames.clear();
}
public void sort(String columnName,boolean order) {
for (int i=0;i<colNames.size();i++) {
//找到columnName是哪一列
if (columnName.equals(colNames.get(i))) {
//根据你有多少行数据初始化一个排序用数组
Object[] datas = new Object[rows.size()];
HashMap<Object, List<Object>> map = new HashMap<Object, List<Object>>();
for (int j=0;j<rows.size();j++) {
map.put(rows.get(j).get(i), rows.get(j));
//map里的key是每一行需要排序列的对象,value是每一行的数据
datas[j] = rows.get(j).get(i);
}
Arrays.sort(datas);
rows.clear();
if (order) {//升序
for (int j=0;j<datas.length;j++) {
rows.add(map.get(datas[j]));
}
} else {//降序
for (int j=datas.length-1;j>=0;j--) {
rows.add(map.get(datas[j]));
}
}
break;
}
}
}
public void show() {
System.out.println("-----------------------------------");
for (String name : colNames) {
System.out.print(" " + name + " ");
}
System.out.println();
for (List<Object> row : rows) {
System.out.println(row);
}
}
public static void main(String[] args) {
//制造一些数据进行测试
int row = 5;
int col = 10;
WMDataSet data = new WMDataSet();
List<Object> newData;
Random ran = new Random();
for (int i=0;i<col;i++) {
data.getColNames().add("col"+i);
}
for (int i=0;i<row;i++) {
newData = new ArrayList<Object>();
for (int j=0;j<col;j++) {
newData.add("cr" + (ran.nextInt(90)+10));
}
data.getRows().add(newData);
}
data.show();
data.sort("col3", true);
data.show();
data.sort("col5", false);
data.show();
}
}
http://gaojiewyh.javaeye.com/blog/405514
import java.util.Arrays;
import java.util.List;
import java.util.Random;public class WMDataSet
{
private List<List<Object>> rows;
private List<String> colNames;
public WMDataSet()
{
this.rows = new ArrayList<List<Object>>(0);
this.colNames = new ArrayList<String>(0);
}
public WMDataSet(String [] colNames)
{
this();
for (String colName : colNames)
{
this.colNames.add(colName);
}
}
public List<List<Object>> getRows()
{
return rows;
}
public List<String> getColNames()
{
return colNames;
}
public void clear ()
{
for (List<Object> row : rows)
{
row.clear();
}
rows.clear();
colNames.clear();
}
public void sort(String columnName,boolean order) {
for (int i=0;i<colNames.size();i++) {
//找到columnName是哪一列
if (columnName.equals(colNames.get(i))) {
//根据你有多少行数据初始化一个排序用数组
Object[] datas = new Object[rows.size()];
ArrayList<List<Object>> oldrows = new ArrayList<List<Object>>(0);
oldrows.addAll(rows);
for (int j=0;j<rows.size();j++) {
datas[j] = rows.get(j).get(i);
}
Arrays.sort(datas);
rows.clear();
if (order) {//升序
for (int j=0;j<datas.length;j++) {
for (List<Object> row : oldrows) {
if (row.get(i).equals(datas[j])) {
rows.add(row);
oldrows.remove(row);
break;
}
}
}
} else {//降序
for (int j=datas.length-1;j>=0;j--) {
for (List<Object> row : oldrows) {
if (row.get(i).equals(datas[j])) {
rows.add(row);
oldrows.remove(row);
break;
}
}
}
}
break;
}
}
}
public void show() {
System.out.println("-----------------------------------");
for (String name : colNames) {
System.out.print(" " + name + " ");
}
System.out.println();
for (List<Object> row : rows) {
System.out.println(row);
}
}
public static void main(String[] args) {
//制造一些数据进行测试
int row = 5;
int col = 10;
WMDataSet data = new WMDataSet();
List<Object> newData;
Random ran = new Random();
for (int i=0;i<col;i++) {
data.getColNames().add("col"+i);
}
for (int i=0;i<row;i++) {
newData = new ArrayList<Object>();
for (int j=0;j<col;j++) {
newData.add("cr" + (ran.nextInt(90)+10));
}
data.getRows().add(newData);
}
data.show();
data.sort("col3", true);
data.show();
data.sort("col5", false);
data.show();
}
}