我有个名单
l = ["a","z","c","c","a","e","e"]
我需要用java生成一组列表,如下所示
l1=["a"]
l2=["z"]
l3=["c","c"]
l4=["a"]
l5=["e","e"]
以下是我目前的代码
package test
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class test {
public static void main(String[] args) {
List<String> l =new ArrayList<>();
List<List> ll =new ArrayList<>();
List<String> nl;
l.add("a");
l.add("z");
l.add("c");
l.add("c");
l.add("a");
l.add("a");
l.add("e");
String prev="";
nl = new ArrayList<>();
for (String x : l){
if(prev.equals(x))
{
nl.add(x);
}
else {
if(!nl.isEmpty()) {
ll.add(nl);
}
else{
List<String> nl1 = new ArrayList<>();
nl1.add(x);
ll.add(nl1);
}
}
prev=x;
}
System.out.println(ll);
}
}
输出
[[a], [z], [c], [c, a], [c, a]]
预期
[[a], [z], [c,c], [a,a], [e]]
通过对代码的一些小修改,下面的代码片段应该会给出disired结果:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> values = Arrays.asList("a","z","c","c","a","e","e");
List<List<String>> result = new ArrayList<>();
String previous = null;
List<String> subList = new ArrayList<>();
for (String value : values) {
if (previous == null || value.equals(previous)) {
subList.add(value);
} else {
result.add(subList);
subList = new ArrayList<>();
subList.add(value);
}
previous = value;
}
if (!subList.isEmpty()) {
result.add(subList);
}
System.out.println(result);
}
}
输出:
[[a], [z], [c, c], [a], [e, e]]
使用streams和AtomicReference的另一种方法:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> input = Arrays.asList("a", "z", "c", "c", "a", "e", "e");
AtomicReference<String> ar = new AtomicReference<>(input.get(0));
AtomicInteger ai = new AtomicInteger();
List<List<String>> result = new ArrayList<>(
input.stream().collect(
Collectors.groupingBy(str -> str.equals(ar.getAndSet(str)) ? ai.get() : ai.incrementAndGet()))
.values());
System.out.println(result);
}
}
我有一个列表,我想创建一个名为的扩展。 我不想覆盖,因此不能使用append、extend或insert。我想知道是否有一个快速的方法来完成这项工作(比使用理解列表或Deep.copy更快)
问题内容: 这个问题已经在这里有了答案 : 循环“忘记”以删除一些项目[重复] (10个答案) 6年前关闭。 我想从列表“ a”中删除项目,其中列表“ b”包含在列表“ a”中找到带有单词的项目 结果应为: 这是因为在列表“ a”的项目中找到了单词“二”和“五六”。 这是我尝试解决的方法: 返回: 为什么这不起作用,如何解决此问题? 谢谢。 问题答案: 遍历列表时,请勿修改列表。这样做会产生不良的
我正在从远程数据库读取一组行,从本地数据库读取一组类似的行,然后使用RemoveAll删除本地已经存在的远程行。。。 但这对我来说似乎不对。当我真正需要做的只是检查是否存在匹配项时,我认为我不应该计算事物。我尝试了和的各种用法,但得到了废话。我不能使用(如这里建议的),因为列表元素不是同一类型。 有更好的方法吗?
问题内容: 我将如何使用python检查列表并删除所有重复项?我不需要指定重复项是什么- 我希望代码找出是否存在重复项,如果有则将其删除,每个重复项仅保留一个实例。如果列表中有多个重复项,它也必须起作用。 例如,在下面的代码中,列表lseparatedOrbList有12个项目-一项被重复六次,一项被重复五次,并且只有一个实例。我希望它更改列表,因此只有三项-每一项,并且它们之前出现的顺序相同。我
我在数据库中有一个包含(id、日期、类别、行、持续时间)的表,我每天都有许多注册表,例如(1,12/12/2014,cat1,ligne1,12)(2,12/2014,cat2,ligne1,10)(3,12/12/2014,cat3,ligne2,23) (4,13/12/2014,cat1,LINGE1,10)(5,13/12/2014,cat2,LINGE1,20)(6,13/12/2014
我有一个充满json对象的表。只有一列“数据”。 我想将这个表转换成一个包含json对象中所有键的多列的表。 例如, 现在我的桌子是这样的: 但我希望它是这样的: 我不想以这种方式查询它,我想以我上面展示的格式完全创建一个新表。 我可以试试跑步: 但由于我的json对象有数百列,这可能效率低下。有没有更有效的方法?感谢您的帮助或建议。