一个list[1,1,2,2,1,1,1,2,2,2] 怎么分成
多个list [1,1]
[2,2]
[1,1,1]
[2,2,2]
java实现恩
[b]问题补充:[/b]
是的,内容相同就为一个list
[b]问题补充:[/b]
连续的内容相同为一个list
[code="java"]
public static void main(String[] args)
{
List<Integer> ary = new ArrayList<Integer>();
ary.add(1);ary.add(1);ary.add(1);
ary.add(2);ary.add(2);ary.add(2);
ary.add(1);ary.add(1);ary.add(1);ary.add(1);ary.add(1);ary.add(1);
ary.add(3);ary.add(3);ary.add(3);
List<List<Integer>> ret = splitListLinked(ary);
System.out.println(ret);
}
public static List<List<Integer>> splitListLinked(List<Integer> ary)
{
if(ary == null || ary.size() == 0)
return null;
List<List<Integer>> ret = new ArrayList<List<Integer>>();
Map<Integer,List<Integer>> map = new HashMap<Integer,List<Integer>>();
int cur = Integer.MIN_VALUE;
int before = Integer.MIN_VALUE;
for(int num : ary)
{
cur = num;
List<Integer> list = map.get(num);
if(list == null)
{
if(map.get(before) != null)
{
ret.add(map.remove(before));
}
before = num;
map.put(num, new ArrayList<Integer>());
list = map.get(num);
}
else
{
if(before != cur)
{
ret.add(map.remove(before));
}
}
list.add(num);
}
ret.addAll(map.values());
return ret;
}
[/code]
你的分割规则是什么,就连接相同的数就为一个list?还是什么
list[1,1,2,2,1,1,1,2,2,2]
多个list [1,1]
[2,2]
[1,1,1]
[2,2,2]
是内容相同为一个list还是连续的内容相同为一个list?!
用一个for 循环遍历list[1,1,2,2,1,1,1,2,2,2]
从索引1开始:
list[i] 赋给一个临时变量v,插入到一个list1中,直到list[i]值为2时,
v!=2
将2赋值给v,将此值插入到新的list2中,直到list[i]值为1时,
.....
总之就是list[i]不等于临时变量时,就换插到新的list中