for(int i=0;i<num;i++){
String bedate=DoDate.firstDay(-i);
String endate=DoDate.lastDay(-i);
List list=renJunKLDao.getKanLouGeRen(bedate, endate);
}
num是不定的大小,list.size()也是不定的长度
list的值的格式为[[张三,20],[李四,15],[王五,12],[赵六,8],[java,7],[lucy,4],[jack,10],[小麦,23]]
[[张三,18],[王五,17],[赵六,12],[李四,8],[小明,7],[lucy,4],[jack,10],[小麦,23],[乔峰,26]]
...........
要求得到的结果是将其合并为一个list,并根据第一个list里面的第一个数字排序:
[[小麦,23,23],[张三,20,18],[李四,15,8],[王五,12,17],[jack,10,10],[赵六,8,12],[java,7,0],[lucy,4,4],[乔峰,0,26],[小明,0,7]]
要求得到的结果是将其合并为一个list,并根据第一个list里面的第一个数字排序:
[[小麦,23,23],[张三,20,18],[李四,15,8],[王五,12,17],[jack,10,10],[赵六,8,12],[java,7,0],[lucy,4,4],[乔峰,0,26],[小明,0,7]]
排序后归并再排序就行了
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;public class Sort { private Map<String, TreeSet<Integer>> result = new HashMap<String, TreeSet<Integer>>(); // 存放结果
/**
* @param list的值的格式为[[张三,20],[李四,15],[王五,12],[赵六,8],[java,7],[lucy,4],[jack,10],[小麦,23]]
* [[张三,18],[王五,17],[赵六,12],[李四,8],[小明,7],[lucy,4],[jack,10],[小麦,23],[乔峰,26]]
*/
public Map<String, TreeSet<Integer>> sort(List<Map<String, Integer>> data) {
for(Map<String, Integer> temp : data) {
Set<String> keys = temp.keySet();
for( String key : keys ) {
if( result.containsKey(key) ) {
// 此时已经出现过这个人的名字
result.get(key).add(temp.get(key));
} else {
TreeSet<Integer> list = new TreeSet<Integer>();
list.add(temp.get(key));
result.put(key, list);
}
}
}
return result;
}
public static void main(String[] args) {
// test
Sort sort = new Sort();
List<Map<String, Integer>> input = new ArrayList<Map<String,Integer>>();
Map<String, Integer> nameAge = new HashMap<String, Integer>();
nameAge.put("张三", 20);
nameAge.put("李四", 15);
nameAge.put("王五", 12);
nameAge.put("赵六", 8);
nameAge.put("java", 7);
nameAge.put("lucy", 4);
nameAge.put("jack", 10);
nameAge.put("小麦", 23);
Map<String, Integer> nameAge1 = new HashMap<String, Integer>();
nameAge1.put("张三", 18);
nameAge1.put("王五", 17);
nameAge1.put("赵六", 12);
nameAge1.put("李四", 8);
nameAge1.put("小明", 7);
nameAge1.put("lucy", 4);
nameAge1.put("jack", 10);
nameAge1.put("小麦", 23);
nameAge1.put("乔峰", 26);
input.add(nameAge);
input.add(nameAge1);
Map<String, TreeSet<Integer>> result = sort.sort(input);
for( String key : result.keySet() ) {
System.out.print(key + ",");
for( Integer temp : result.get(key) ) {
System.out.print(temp.intValue() + ",");
}
System.out.println("\n");
}
}
}
运行结果: 张三,18,20,java,7,lucy,4,李四,8,15,jack,10,小明,7,小麦,23,王五,12,17,乔峰,26,赵六,8,12,这个程序没有排序,相信写到这里你的排序也能搞定~ 希望帮到你
跟我要的结果还是不同啊,弄了一下还是不行[小麦,23,23]2 个23都要显示,如何第一个没有则用0补上如:[小明,0,7]
我不知道你是怎么弄的~~ 都已经写成这样了还弄不成你想要的~ 我帮你弄弄~
package com.hit.edu.monkey;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;public class Sort { private Map<String, List<Integer>> result = new HashMap<String, List<Integer>>(); // 存放结果
/**
* @param list的值的格式为[[张三,20],[李四,15],[王五,12],[赵六,8],[java,7],[lucy,4],[jack,10],[小麦,23]]
* [[张三,18],[王五,17],[赵六,12],[李四,8],[小明,7],[lucy,4],[jack,10],[小麦,23],[乔峰,26]]
*/
public Map<String, List<Integer>> sort(List<Map<String, Integer>> data) {
for(Map<String, Integer> temp : data) {
Set<String> keys = temp.keySet();
for( String key : keys ) {
if( result.containsKey(key) ) {
// 此时已经出现过这个人的名字
result.get(key).add(temp.get(key));
} else {
List<Integer> list = new ArrayList<Integer>();
list.add(temp.get(key));
result.put(key, list);
}
}
}
return result;
}
public static void main(String[] args) {
// test
Sort sort = new Sort();
List<Map<String, Integer>> input = new ArrayList<Map<String,Integer>>();
Map<String, Integer> nameAge = new HashMap<String, Integer>();
nameAge.put("张三", 20);
nameAge.put("李四", 15);
nameAge.put("王五", 12);
nameAge.put("赵六", 8);
nameAge.put("java", 7);
nameAge.put("lucy", 4);
nameAge.put("jack", 10);
nameAge.put("小麦", 23);
Map<String, Integer> nameAge1 = new HashMap<String, Integer>();
nameAge1.put("张三", 18);
nameAge1.put("王五", 17);
nameAge1.put("赵六", 12);
nameAge1.put("李四", 8);
nameAge1.put("小明", 7);
nameAge1.put("lucy", 4);
nameAge1.put("jack", 10);
nameAge1.put("小麦", 23);
nameAge1.put("乔峰", 26);
input.add(nameAge);
input.add(nameAge1);
Map<String, List<Integer>> result = sort.sort(input);
for( String key : result.keySet() ) {
System.out.print(key + ",");
for( Integer temp : result.get(key) ) {
System.out.print(temp.intValue() + ",");
if( result.get(key).size() == 1 ) {
System.out.print("0,");
}
}
System.out.println("\n");
}
}
}
运行结果:
张三,20,18,java,7,0,lucy,4,4,李四,15,8,jack,10,10,小明,7,0,小麦,23,23,王五,12,17,乔峰,26,0,赵六,8,12,
类里面是名字和一个List,这个List用于存放出现的数值你再做一个List<Test> l;
然后对于每一个出现的数据,按照名字进行查找,然后将出现的数值存入该Test类中List中
这样的方法是不是很好呢
List list2=new ArrayList();
for(int i=0;i<num;i++){
String bedate=DoDate.firstDay(-i);
String endate=DoDate.lastDay(-i);
List list=renJunKLDao.getKanLouGeRen(bedate, endate);
if(i==0){
list0=list;
}else {
for (int j = 0; j < list0.size(); j++) {
Object[] objects=(Object[]) list0.get(j);
for (int k = 0; k < list.size(); k++) {
Object[] objects2=(Object[]) list.get(k);
if(objects[0].equals(objects2[0])){
Object[] objectsa=new Object[num+1];
for (int l = 0; l < objects.length; l++) {
objectsa[l]=objects[l];
}
objectsa[num]=objects2[1];
list2.add(objectsa);
break;
}
if(list.size()-1==k && !(objects[0].equals(objects2[0]))){
Object[] objectsa=new Object[num+1];
for (int l = 0; l < objects.length; l++) {
objectsa[l]=objects[l];
}
objectsa[num]=0;
list2.add(objectsa);
break;
}
}
}
}
}
return list2;
其实用数组 就可以 直接进行排序了: 数组.sort(排序方法)
/**
* @author troy(J2EE)
* @version 1.0
*/
import java.util.*;
public class Test{
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception{
String[] ayy={"张三,80","李四,95","王五,72","赵六,8","java,7","lucy,4","jack,10","小麦,23"};
Arrays.sort(ayy,new howToSort());
for (int i=0;i<ayy.length ;i++ ){
System.out.println(ayy[i]);
}
}
}
//按逗号分隔,取第一个字符倒序
class howToSort implements Comparator {
public final int compare(Object firstObj, Object secondObj){
String tmpFirstObj=(String)firstObj;
String tmpSecondObj=(String)secondObj;
return tmpSecondObj.split(",")[1].substring(0,1).hashCode() - tmpFirstObj.split(",")[1].substring(0,1).hashCode();
}
}
在JDK1.5 中的输出结果:---------- java1.5 -- 运行 ----------
李四,95
张三,80
赵六,8
王五,72
java,7
lucy,4
小麦,23
jack,10输出完毕 (耗时 0 秒) - 正常终止