Java 当我对字符串使用split方法时,为什么会在字符串的数组列表中添加额外的空间

Java 当我对字符串使用split方法时,为什么会在字符串的数组列表中添加额外的空间,java,arraylist,split,Java,Arraylist,Split,我已经附上了我的代码和代码的输出。当我打印数组元素时,它不会显示任何空格,但是当这些元素被传输到arrayList时,我会在每个元素之前获得这些空格,就好像它们在那里一样,因为实际字符串中有“/” 这是我的密码 publicstaticvoidmain(字符串[]args){ 扫描器x=新扫描器(System.in); 字符串n=“/www/abc/pqr//com”; 字符串arr[]=n.split(“/”); ArrayList=新建ArrayList(); 对于(int i=0;i,我假

我已经附上了我的代码和代码的输出。当我打印数组元素时,它不会显示任何空格,但是当这些元素被传输到arrayList时,我会在每个元素之前获得这些空格,就好像它们在那里一样,因为实际字符串中有“/”

这是我的密码

publicstaticvoidmain(字符串[]args){
扫描器x=新扫描器(System.in);
字符串n=“/www/abc/pqr//com”;
字符串arr[]=n.split(“/”);
ArrayList=新建ArrayList();

对于(int i=0;i,我假设您的问题是针对输出中的这些空白:

[, www, abc, pqr, ., com]
  ^    ^    ^    ^  ^ 
您看到的这些“空格”实际上不是列表中
字符串的一部分,它们是在您通过
System.out.println(list)
ArrayList
上隐式调用
toString()
时添加的

见:

返回此集合的字符串表示形式。字符串表示形式由集合元素的列表组成,这些元素按迭代器返回的顺序排列,用方括号([])括起来。相邻元素之间用“,”(逗号和空格)分隔.元素通过String.valueOf(对象)转换为字符串

因此,列表中实际的
字符串
不包含这些空格,它们只是为了方便打印时查看而添加的

这是您更新的代码,它还解决了通过
equals
而不是
!=
正确比较
字符串的问题。我还包括了一个
isEmpty()
检查,以从列表中删除空的
字符串

public static void main(String[] args) {
    String n = "/www/abc/pqr/./com";
    String arr[] = n.split("/");
    ArrayList<String> list = new ArrayList<>();
    for (int i = 0; i < arr.length; i++) {
        if (!(arr[i].equals(".") || arr[i].isEmpty())) {
            list.add(arr[i]);
        }
    }
    System.out.println(list);
}

请不要在注释中添加代码。相反,您的问题是在注释中添加具有正确格式的代码。@maloomeister这与此问题有什么关系?我们讨论的是拆分行为,而不是==vs equals。@Subhanshutripath这样做,因为在您的原始字符串中,在第一个“/”之前有一个“空字符串”)1.这是意料之中的事behavior@Stultuske正确。我在发现
!=”时添加了重复链接
当他们的注释中仍然有代码时。我认为这是他们的问题所在。元素中没有空格,但在输出过程中它显示为空格,可能是因为某些格式原因。如果您认为空格会导致任何问题,使用值时只需调用.trim()在元素上,它将删除任何额外的空间。@subhanshutripath我不会将代码放在注释中,而是放在您的问题中。这是不可读的
[www, abc, pqr, com]