一个集合分组显示的问 各位指点一下

一个list集合 假如里面有10条数据 我想分成6+4集合处理 假如里面有20条数据 我想弄成6+6+6+2形态处理 小白弄了几个小时 没弄出我想要的结果 求各位指点一点 下面是我敲的代码 List list = new ArrayList();
for(int i = 0 ;i<10;i++){
list.add("aaa");
}

    Map<Integer,List<String>> map = new HashMap<Integer,List<String>>();
    int k=0;
    for (int i = 0 ;i<list.size();i+=6) {
    List<String> newList =  list.subList(i, i+4);
        map.put(k, newList);
        k++;
    }

    for (Entry<Integer,List<String>> s :map.entrySet()) {
        System.out.println("key="+s.getKey()+"value="+s.getValue());

    }   这不是我想要的结果 sublist里改为i+6 又会报越界错误 这需要怎么改呀。。。。

给你思路:
获取list个数,然后就是除以6,得到商p和余数q,循环获得p组,每组数据6个,然后q判断是否为0,不为0,就把最后的q个放到一个租

嗯,大概思想是将原list每6个重新组成一个新的List,然后再把新List放到map中,下面的伪码你可以参考

int count = 0;
List<String> newList = new ArrayList<String>();

for(int i = 0;i<list.length;i++){
    newList.add(list.get(i));
    ++count;
    if(count==6){
        map.put(k,newList);
        k++;
        count=0;
        newList = new ArrayList<String>();
    }
    if(count>0)
        map.put(k,newList);
}

for (Entry<Integer,List<String>> s :map.entrySet()) {
        System.out.println("key="+s.getKey()+"value="+s.getValue());
}

遍历oldlist 集合,定义一个新的newlist1 ,从oldlist 获取数据,获取一个插入到newlist1,在oldlist ,remove掉这个,插入6个再定义第二个newlist2.如果oldlist为空跳出

对不起,上面的代码有点错误,第二个if应该在for外面

 int count = 0;
List<String> newList = new ArrayList<String>();

for(int i = 0;i<list.length;i++){
    newList.add(list.get(i));
    ++count;
    if(count==6){
        map.put(k,newList);
        k++;
        count=0;
        newList = new ArrayList<String>();
    }

}
 if(count>0)
        map.put(k,newList);
for (Entry<Integer,List<String>> s :map.entrySet()) {
        System.out.println("key="+s.getKey()+"value="+s.getValue());
}
public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你定义的数据长度");
        int size = sc.nextInt();
        for (int i = 0; i < size; i++) {
            list.add(String.valueOf(i));
        }
        Map<Integer, List<String>> map = getNewArrays(list);
        for (Entry<Integer, List<String>> s : map.entrySet()) {
            System.out.println("key=" + s.getKey() + "value.size="
                    + s.getValue().size());
        }
    }

    private static Map<Integer, List<String>> getNewArrays(List<String> list) {
        Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
        int q = list.size() / 6;
        int y = list.size() % 6;
        int k = 0;
        for (int i = 0; i < q; i++) {
            List<String> newList = list.subList(i, i + 6);
            map.put(k, newList);
            k++;
        }
        map.put(k, list.subList(list.size() - (y + 1), list.size() - 1));
        return map;
    }