这是一个list,其中每一行是一个object,
ID="1" CTIME="2011032414"
ID="3" CTIME="2011052414"
ID="12" CTIME="2011041013"
ID="2" CTIME="2011061013"
ID="4" CTIME="2011041013"
ID="22" CTIME="2011041013"
ID="12" CTIME="2010041013"
ID="1" CTIME="2011061013"
ID="1" CTIME="2011041013"
ID="3" CTIME="2010081023"
ID="22" CTIME="2011041014"
ID="4" CTIME="2010041014"
那么如何根据ID来进行分组呢? 能否给一段代码解释???谢谢了
ID="1" CTIME="2011032414"
ID="3" CTIME="2011052414"
ID="12" CTIME="2011041013"
ID="2" CTIME="2011061013"
ID="4" CTIME="2011041013"
ID="22" CTIME="2011041013"
ID="12" CTIME="2010041013"
ID="1" CTIME="2011061013"
ID="1" CTIME="2011041013"
ID="3" CTIME="2010081023"
ID="22" CTIME="2011041014"
ID="4" CTIME="2010041014"
那么如何根据ID来进行分组呢? 能否给一段代码解释???谢谢了
Comparator 接口 里面根据ID 先比较 ID一样根据name 比较然后
Collections。sort(List<T> list, Comparator<? super T> c)
结果会如你所愿:
ID="1" CTIME="2011032414"
ID="1" CTIME="2011041013"
ID="1" CTIME="2011061013" Id=2
id3= ^^^^
{
String id=;//取出来ID
String CTIME =;//取出CTIME
if(m.get(id)!=null)//判断ID是否已经存在了
{
ArrayList list = (ArrayList)m.get(id);//根据ID取出List
list.add(CTIME );//放入CTIME
}else//如果没有,则创建新的List放进去
{
ArrayList list = new ArrayList();
list.add(CTIME );
m.put(id,list);//第一次以这个ID将List放到Map中
}
}遍历Map则可以得到各ID的List了
如果你是想使用map进行存储不同的分组 那么可以参照 8 楼的做法我的做法 不使用map ,我的只是排序完 依旧是一个list:package test;/**
*
* @Description:
*
* @author weisd Email:[email protected]
* @date 2011-4-10 下午11:24:57
* @version v1.0
*/
public class TestVo {
private String id;
private String ctime; public TestVo() {
}; public TestVo(String id, String ctime) {
this.id = id;
this.ctime = ctime;
}; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getCtime() {
return ctime;
} public void setCtime(String ctime) {
this.ctime = ctime;
} @Override
public String toString() {
if (id.length() == 1) {//只是为了好看
return id + " " + ctime;
} else {
return id + " " + ctime;
}
}}package test;import java.util.Comparator;/**
*
* @Description:
*
* @author weisd Email:[email protected]
* @date 2011-4-10 下午11:33:36
* @version v1.0
*/
public class UtilComparator implements Comparator { @Override
public int compare(Object o1, Object o2) {
TestVo v1 = (TestVo) o1;
TestVo v2 = (TestVo) o2;
String id1 = v1.getId();
String ctime1 = v1.getCtime(); String id2 = v2.getId();
String ctime2 = v2.getCtime(); // 这里就是 你的排序规则
int i1 = id1.compareTo(id2);
int c1 = ctime1.compareTo(ctime2);
if (i1 == 0) {
return c1;
} else {
return i1;
}
}}package test;import java.util.ArrayList;
import java.util.Collections;
import java.util.List;/**
*
* @Description:
*
* @author weisd Email:[email protected]
* @date 2011-4-10 下午11:26:02
* @version v1.0
*/
public class TestComparator { /**
* @param args
*/
public static void main(String[] args) {
TestComparator t = new TestComparator();
List list = t.getInitList();
Collections.sort(list, new UtilComparator()); for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
} } public List getInitList() {
String ID1 = "1";
String CTIME1 = "2011032414";
String ID2 = "3";
String CTIME2 = "2011052414";
String ID3 = "12";
String CTIME3 = "2011041013";
String ID4 = "2";
String CTIME4 = "2011061013";
String ID5 = "4";
String CTIME5 = "2011041013";
String ID6 = "22";
String CTIME6 = "2011041013";
String ID7 = "12";
String CTIME7 = "2010041013";
String ID8 = "1";
String CTIME8 = "2011061013";
String ID9 = "1";
String CTIME9 = "2011041013";
String ID10 = "3";
String CTIME10 = "2010081023";
String ID11 = "22";
String CTIME11 = "2011041014";
String ID12 = "4";
String CTIME12 = "2010041014";
TestVo vo1 = new TestVo(ID1, CTIME1);
TestVo vo2 = new TestVo(ID2, CTIME2);
TestVo vo3 = new TestVo(ID3, CTIME3);
TestVo vo4 = new TestVo(ID4, CTIME4);
TestVo vo5 = new TestVo(ID5, CTIME5);
TestVo vo6 = new TestVo(ID6, CTIME6);
TestVo vo7 = new TestVo(ID7, CTIME7);
TestVo vo8 = new TestVo(ID8, CTIME8);
TestVo vo9 = new TestVo(ID9, CTIME9);
TestVo vo10 = new TestVo(ID10, CTIME10);
TestVo vo11 = new TestVo(ID11, CTIME11);
TestVo vo12 = new TestVo(ID12, CTIME12); List list = new ArrayList();
list.add(vo1);
list.add(vo2);
list.add(vo3);
list.add(vo4);
list.add(vo5);
list.add(vo6);
list.add(vo7);
list.add(vo8);
list.add(vo9);
list.add(vo10);
list.add(vo11);
list.add(vo12); return list;
}
}结果:
1 2011032414
1 2011041013
1 2011061013
12 2010041013
12 2011041013
2 2011061013
22 2011041013
22 2011041014
3 2010081023
3 2011052414
4 2010041014
4 2011041013可以根据需要设置比较规则: // 这里就是 你的排序规则
int i1 = id1.compareTo(id2);
int c1 = ctime1.compareTo(ctime2);
if (i1 == 0) {
return c1;
} else {
return i1;
}我的结果只是在一个list中,并为分组
{
String id;
ArrayList list;
public Temp()
{
}
public Temp(String id,ArrayList list)
{
this.id = id;this.list = list;
}
//对应的get/set方法
}Set set = map.keySet();ArrayList list = new ArrayList();
遍历set()
{
String key=;//得到set中的元素,实际就是id
list.add(new Temp(key,map.get(key)));}