在逗号分隔的数据中查找空元素的问题 import java.util.ArrayList; 导入java.util.StringTokenizer; 公共类测试{ 公共静态void main(字符串参数[]){ ArrayList数据=新的ArrayList(); 字符串s=“a、b、c、d、e、f、g”; StringTokenizer st=新的StringTokenizer,“,”; 而(st.hasMoreTokens()){ data.add(st.nextToken()); } 系统输出打印项次(数据); } }

在逗号分隔的数据中查找空元素的问题 import java.util.ArrayList; 导入java.util.StringTokenizer; 公共类测试{ 公共静态void main(字符串参数[]){ ArrayList数据=新的ArrayList(); 字符串s=“a、b、c、d、e、f、g”; StringTokenizer st=新的StringTokenizer,“,”; 而(st.hasMoreTokens()){ data.add(st.nextToken()); } 系统输出打印项次(数据); } },java,pattern-matching,Java,Pattern Matching,在CSV数据中查找空元素时出现问题 当数据完整时,上述代码运行良好。如果某些数据丢失,则无法检测到空数据 例: 完整数据:a、b、c、d、e、f、g 如果a、d、e、g被移除 新数据:、b、c、、f、 4数据丢失 我需要一种方法将此数据放入ArrayList中,空数据的值为null或“”我相信还有更优雅的解决方案,但一个简单的方法是使用函数: import java.util.ArrayList; import java.util.StringTokenizer; public class t

在CSV数据中查找空元素时出现问题 当数据完整时,上述代码运行良好。如果某些数据丢失,则无法检测到空数据

例: 完整数据:a、b、c、d、e、f、g

如果a、d、e、g被移除

新数据:、b、c、、f、

4数据丢失


我需要一种方法将此数据放入ArrayList中,空数据的值为null或“”我相信还有更优雅的解决方案,但一个简单的方法是使用函数:

import java.util.ArrayList;
import java.util.StringTokenizer;

public class test { 

public static void main(String args[]) {

    ArrayList<String> data = new ArrayList<String>();
    String s = "a,b,c,d,e,f,g";
    StringTokenizer st  = new StringTokenizer(s,",");

    while(st.hasMoreTokens()){
        data.add(st.nextToken());
    }
    System.out.println(data);

}

}
publicstaticvoidmain(字符串参数[]){
ArrayList数据=新的ArrayList();
字符串s=“,b,c,,,f,”;
//使用“,”作为分隔符创建字符串数组
//如果逗号之间没有字母,将显示空字符串
//而是放在字符串[]中
String[]strings=s.split(“,”,-1);
for(字符串ss:strings){
添加数据(ss);
}
系统输出打印项次(数据);
}
您可以使用:

public static void main(String args[]) {

    ArrayList<String> data = new ArrayList<String>();
    String s = ",b,c,,,f,";

    //create an array of strings, using "," as a delimiter
    //if there is no letter between commas, an empty string will be 
    //placed in strings[] instead
    String[] strings = s.split(",", -1);

    for (String ss : strings) {
        data.add(ss);
    }

    System.out.println(data);
}
import com.google.common.base.Splitter;
公开课范例
{  
私有静态最终拆分器Splitter=Splitter.on(“,”).trimResults();
公共列表拆分(字符串单行){
返回拆分器。拆分(单线);
}
}

到目前为止,您尝试了哪些代码?请添加更多信息,以便我们了解“4数据缺失”的含义。您的代码看起来如何?你也在使用CSV解析器吗?已经尝试过了,问题:1。未检测到最后丢失的元素2。对于最后一个元素的大数据,拆分速度很慢。只有一个逗号。@Anshul如果使用带有负数限制的拆分,最后一个空元素将被包括在内。尝试
s.split(“,”,-1)是一个遗留类,出于兼容性原因保留该类,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人改用String的split方法或java.util.regex包。编辑:与Pshemo的修改,编辑我的代码感谢解决方案。但我正在寻找一个更快的解决方案。使用这只是一个数据。我有一个3gb的文件,如下a、b、c、.| a1、b1、c1、.| a2、b2。。。阅读。StringTokeniser使我的代码速度提高了2倍。还有其他没有拆分的更快解决方案吗?
import com.google.common.base.Splitter;

public class Example
{  
    private static final Splitter SPLITTER = Splitter.on(",").trimResults();

    public List<String> split(String singleLine) {
        return SPLITTER.split(singleLine);        
    }
}