我有一个list,里面装了很多对象,就是可以操作的菜单的对象,这些对象有一些的parentId是相同的,现在我想把list里面的parentId相同的分类,应该怎么做?很郁闷啊,这是我贴的代码
for(int i=0;i<allList.size();i++) {
childList.add(allList.get(i));
for(int j=i+1;j<allList.size();) {
if(allList.get(i).getMenuParentid().equals(allList.get(j).getMenuParentid())) {
childList.add(allList.get(j));
allList.remove(j);
j--;
}
}
for(int m=0;m<childList.size();m++) {
System.out.println(i+" parentId  "+childList.get(m).getMenuParentid());
}
allList.remove(i);
i--;
list.add(childList);
System.out.println("第"+i+1+"次循环remove后"+allList.size());
}
谢谢大家了,帮帮我

解决方案 »

  1.   

    java.util 
    类 Arrays
    sort
    public static <T> void sort(T[] a,
                                Comparator<? super T> c)
      

  2.   

    java.util.Collections;
    java.util.Comparator;
    使用以上2类可实现List根据对象中的属性排序.
      

  3.   

    //parentIds集合
    Set<Integer> parentIds = new HashSet<Integer>();
    for(int i=0;i<allList.size();i++){
    parentIds(allList.get(i).getParentId());
    }
    //总的分类,里面是每个parentId的分类;
    ArrayList categorys = new ArrayList();
    for(Integer i:parentIds){
    //以parentid=i的分类;
    List category = new ArrayList();
    for(int j=0;j<allList.size();j++){
    if(i == allList.get(i).getParentId()){
    category.add(allList.get(j));
    }
    }
    }
      

  4.   

    我按你的想法做的,你看一下.import java.util.ArrayList;
    import java.util.Random;public class ListTest { static class MenuItem {

    private String itemid = ""; private String menuParentid = ""; /**
     * @return the itemid
     */
    public String getItemid() {
    return itemid;
    } /**
     * @param itemid
     *            the itemid to set
     */
    public void setItemid(String itemid) {
    this.itemid = itemid;
    } /**
     * @return the menuParentid
     */
    public String getMenuParentid() {
    return menuParentid;
    } /**
     * @param menuParentid
     *            the menuParentid to set
     */
    public void setMenuParentid(String menuParentid) {
    this.menuParentid = menuParentid;
    } public String toString() {
    StringBuffer ret = new StringBuffer();
    ret.append("menuParentid=" + menuParentid + ",itemid=" + itemid);
    return ret.toString();
    } } public static void main(String[] args) { ArrayList<MenuItem> allList = new ArrayList<MenuItem>();
    Random rdm = new Random(System.currentTimeMillis());
    // prepare allList
    System.out.println("最初的allList:");
    for (int i = 0; i <= 100; i++) {
    MenuItem item = new MenuItem();
    item.setItemid(Integer.toString(i));
    item.setMenuParentid(Integer.toString(rdm.nextInt(3)));
    allList.add(item);
    System.out.println(item.toString());
    }
    ArrayList<ArrayList<MenuItem>> list = new ArrayList<ArrayList<MenuItem>>();

    int turn = 0;
    for (int i = 0; i < allList.size(); i++,turn++) {
    ArrayList<MenuItem> childList = new ArrayList<MenuItem>();
    childList.add(allList.get(i));
    for (int j = i + 1; j < allList.size();) {
    if (allList.get(i).getMenuParentid().equals(
    allList.get(j).getMenuParentid())) {
    childList.add(allList.get(j));
    allList.remove(j);
    // j--;
    } else {
    j++;
    }
    }
    System.out.println("第" + (turn + 1) + "次循环产生的childList:");
    for (int m = 0; m < childList.size(); m++) {
    System.out.println(childList.get(m).toString());
    }
    allList.remove(i);
    i--;
    list.add(childList);
    System.out.println("第" + (turn + 1) + "次循环remove后" + allList.size());
    }
    }
    }
      

  5.   

    不要用List,建议用dom4j的Document对象,数据是xml格式的,可以直接查询某一个属性相同的全部列。
      

  6.   


    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;public class TestList { public static void main(String[] args) {
    List tmpList = new ArrayList();
    tmpList.add(new Bean1("1", "a1"));
    tmpList.add(new Bean1("1", "a2"));
    tmpList.add(new Bean1("1", "a3"));
    tmpList.add(new Bean1("2", "b1"));
    tmpList.add(new Bean1("2", "b2")); Map m = new HashMap();
    Bean1 b1;
    Bean2 b2;
    String key;

    for (Iterator iter = tmpList.iterator(); iter.hasNext();) {
    b1 = (Bean1) iter.next();
    b2 = (Bean2) m.get(b1.getParenid());
    if (b2 != null) {
    b2.getTlist().add(b1);
    } else {
    m.put(b1.getParenid(), new Bean2(b1.getParenid(), b1));
    }
    } for (Iterator iter = m.keySet().iterator(); iter.hasNext();) {
    key = iter.next().toString();
    System.out.println("分类" + key);
    b2 = (Bean2) m.get(key);
    for (Iterator j = b2.getTlist().iterator(); j.hasNext();) {
    Bean1 bb1 = (Bean1) j.next();
    System.out.println(bb1.getParenid() + " " + bb1.getName());
    } } }
    }class Bean1 {
    public String parenid;
    public String name; Bean1(String pid, String name) {
    this.parenid = pid;
    this.name = name;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getParenid() {
    return parenid;
    } public void setParenid(String parenid) {
    this.parenid = parenid;
    }
    }class Bean2 {
    private String key;
    private List tlist = new ArrayList(); public Bean2(String parenid, Object element) {
    this.key = parenid;
    this.tlist.add(element);
    }
    public String getKey() {
    return key;
    }
    public void setKey(String key) {
    this.key = key;
    }
    public List getTlist() {
    return tlist;
    }
    public void setTlist(List tlist) {
    this.tlist = tlist;
    }
    }
      

  7.   

    笨方法循环判断应该是可以的,我那考试题就是这么出来的java.util.Collections;
    java.util.Comparator;这两个类怎么实现?