Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拆分并删除新行_Java_List_Arraylist - Fatal编程技术网

Java 拆分并删除新行

Java 拆分并删除新行,java,list,arraylist,Java,List,Arraylist,我试着用逗号分割文本,并将每个文本添加到列表中。文本示例: 用户1,角色1 用户2,角色2 用户3,角色3 user 4 , role 4 user 5 , role 5 功能: private Map<Integer, List<String>> map = new HashMap<Integer, List<String>>(); public String splitString(String sentence) { List

我试着用逗号分割文本,并将每个文本添加到列表中。文本示例:

用户1,角色1

用户2,角色2 用户3,角色3

 user 4 , role 4

 user 5 , role 5
功能:

private Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
public String splitString(String sentence) {
    List<String> list;
    String[] dividedByNewLine = sentence.split("\n");
    for (int i = 0; i < dividedByNewLine.length; i++) {
            String[] divideByComma = dividedByNewLine[i].split(",");
            list = new ArrayList<String>();
            for (int j = 0; j < divideByComma.length; j++) {
                list.add(divideByComma[j].trim());
            }
            if (!list.isEmpty()) {
                map.put(i, list);
            }
            System.out.println(map.get(i));
       
    }

    return null;
}
但函数构建列表如下所示:

[用户1,角色1]

[]

[用户2,角色2]

[用户3,角色3]

[]

[用户4,角色4]

[]

[用户5,角色5]


如何删除列表中的[]?

,因为您的输入有空行。如果您不想显示空行,您的代码应该是:

for (int i = 0; i < dividedByNewLine.length; i++) {
    if (!dividedByNewLine[i].trim().isEmpty()){
      String[] divideByComma = dividedByNewLine[i].split(",");
            list = new ArrayList<String>();
            for (int j = 0; j < divideByComma.length; j++) {
                list.add(divideByComma[j].trim());
            }
            if (!list.isEmpty()) {
                map.put(i, list);
            }
            System.out.println(map.get(i));
   }
}
在dividedByNewLine中搜索所有空的行并删除它们!然后你会得到

user 1 , role 1
user 2 , role 2
user 3 , role 3
user 4 , role 4
user 5 , role 5
或dividedByNewLine[i]。拆分,对于非空的dividedByNewLine:

for (int i = 0; i < dividedByNewLine.length; i++) 
{
    if(!dividedByNewLine[i].isEmpty())
    {
        String[] divideByComma = dividedByNewLine[i].split(",");

        ...
     }
 }
尝试以下for循环:

基本上,您必须跳过空行。

您可以在添加到列表之前删除[]:-


这是因为toString方法具有那样的列表表示形式。如果!dividedByNewLine[i].trim.equals代码块已工作。非常感谢。
for (int i = 0; i < dividedByNewLine.length; i++) {
        if(!dividedByNewLine[i].trim().equals("")) {
            String[] divideByComma = dividedByNewLine[i].split(",");

        list = new ArrayList<String>();
        for (int j = 0; j < divideByComma.length; j++) {
            list.add(divideByComma[j].trim());
        }
        if (!list.isEmpty()) {
            map.put(i, list);
        }
        System.out.println(map.get(i));
        }
}
for (int i = 0; i < dividedByNewLine.length; i++) {
        String[] divideByComma = dividedByNewLine[i].split(",");

        //Add this control statement
        if(divideByComma.isEmpty())
        continue;       //If the string is empty then continue the loop

        list = new ArrayList<String>();
        for (int j = 0; j < divideByComma.length; j++) {
            list.add(divideByComma[j].trim());
        }
        if (!list.isEmpty()) {
            map.put(i, list);
        }
        System.out.println(map.get(i));

}