Java 将CSV列表转换为设置<;长期>;如果没有重复项,则忽略空值
我想将字符串中由逗号分隔的数字列表转换为java中的Java 将CSV列表转换为设置<;长期>;如果没有重复项,则忽略空值,java,Java,我想将字符串中由逗号分隔的数字列表转换为java中的集合,忽略空条目和重复项。分隔符可以是任何字符串,不仅仅是逗号,但为了简单起见,我在这里使用逗号 e、 g Java 8解决方案如下所示: import java.util.stream.Collectors; import java.util.Arrays; import java.util.Set; String csv = "1,2,3,4,,2"; Set<Long> set = Arrays.asList(csv.spl
集合
,忽略空条目和重复项。分隔符可以是任何字符串,不仅仅是逗号,但为了简单起见,我在这里使用逗号
e、 g
Java 8解决方案如下所示:
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.Set;
String csv = "1,2,3,4,,2";
Set<Long> set = Arrays.asList(csv.split(","))
.stream()
.map(String::trim)
.filter(x -> x.length() > 0)
.map(Long::parseLong)
.collect(Collectors.toSet());
import java.util.stream.collector;
导入java.util.array;
导入java.util.Set;
字符串csv=“1,2,3,4,2”;
Set=Arrays.asList(csv.split(“,”))
.stream()
.map(字符串::trim)
.filter(x->x.length()>0)
.map(Long::parseLong)
.collect(收集器.toSet());
另一种方法是在一个for循环中使用一个if语句
(如果用户不想使用流
或利用Java 8新功能):
使用扫描仪
String csv = "1,2,3,4,,2";
Set<Long> set = new HashSet<>();
try (Scanner sc = new Scanner(csv)) {
sc.useDelimiter(",");
while (sc.hasNext()) {
String next = sc.next();
if (!next.equals("")) {
set.add(Long.parseLong(next));
}
}
}
System.out.println(set);
String csv=“1,2,3,4,2”;
Set=newhashset();
尝试(扫描仪sc=新扫描仪(csv)){
sc.useDelimiter(“,”);
while(sc.hasNext()){
字符串next=sc.next();
如果(!next.equals(“”){
set.add(Long.parseLong(next));
}
}
}
系统输出打印项次(套);
可以使用Arrays.stream(csv.split(\\D+”)
来避免创建列表和过滤空字符串。修剪不是必需的,但是您可能需要使用split(“,”,-1)
。在过滤器中,您可以创建一个谓词谓词emptyString=String::isEmpty编码>并在上使用emptyString.negate()
it@ViktorMellgren-感谢您的反馈-但如果有多个空格的空条目,例如“1、、2”,则需要进行修剪。至少看起来是这样,因为我试图拆除饰件和/或过滤器,但都失败了。
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.Set;
String csv = "1,2,3,4,,2";
Set<Long> set = Arrays.asList(csv.split(","))
.stream()
.map(String::trim)
.filter(x -> x.length() > 0)
.map(Long::parseLong)
.collect(Collectors.toSet());
import java.util.HashSet;
import java.util.Set;
public class ConvertCSVToSETLong {
public static void main(String[] args){
// different numbers of commas
String csv = "1,,,,2,3,,,,4,,,,2,,5,,6,7,1";
Set<Long> set = new HashSet<Long>();
for(String s : csv.split(",")){
if(!s.trim().isEmpty()){
set.add(Long.parseLong(s));
}
}
System.out.println(set); // test
}
}
[1, 2, 3, 4, 5, 6, 7]
String csv = "1,2,3,4,,2";
Set<Long> set = new HashSet<>();
try (Scanner sc = new Scanner(csv)) {
sc.useDelimiter(",");
while (sc.hasNext()) {
String next = sc.next();
if (!next.equals("")) {
set.add(Long.parseLong(next));
}
}
}
System.out.println(set);