一个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;
}