将字符串与ArrayList字符串元素进行比较

时间:2016-10-10 10:25:55

标签: java arraylist compare

我需要一些帮助来解决我的问题,如下所述:

我有一个名为datalist的数组列表,它有像ah3w 38 45 1,zj4e 32 4 45这样的元素。我想比较像ah3w 38 45 1这样的字符串,以便检查它是否在arraylist中。主要问题是空白。我想忽略它们,因为有时我在arraylist中有元素,它们在字符之间有多个空格。我尝试使用replaceAll方法尝试了类似下面的东西,但它没有用。最后我尝试在创建arraylist之前删除所有空格,然后我也为我的字符串做了同样的事情,它工作但是它不像我想要的那样。我不想改变任何我想要比较它们没有空格的东西。这是我的代码示例:

String field = "ah3w 38 45 1"
for(int a=0; a<datalist.size(); a++){
   if(datalist.get(a).replaceAll("\\s+","").contains(field.replaceAll("\\s+",""))){
      datalist.remove(a);
   }
}

这是另一个代码块正在做同样的事情,你可以运行,看看我想做什么和得到什么:

import java.util.ArrayList;

public class ReplaceAllElementsOfArrayListExample {

  public static void main(String[] args) {

    ArrayList arrayList = new ArrayList();
    String field= "ah3w 38 45 1";

    arrayList.add("zj4e 32   4  45");
    arrayList.add("ah3w       38  45   1");
    arrayList.add("ab2 56 2 45");

    System.out.println("Before replacement, ArrayList contains : " + arrayList);

    if(arrayList.get(1).replaceAll("\\s+","").contains(field.replaceAll("\\s+",""))){

    System.out.println("They are equal : " + arrayList);}
    else{
      System.out.println("They are not equal : " + arrayList);  
    }

  }
}

1 个答案:

答案 0 :(得分:0)

试试这个:

    ArrayList<String> arrayList = new ArrayList<String>();
        String field = "ah3w 38 45 1";

        arrayList.add("zj4e 32   4  45");
        arrayList.add("ah3w       38  45   1");
        arrayList.add("ab2 56 2 45");

        //solution
        String fieldNoWhitespaces = field.replaceAll("\\s", "");

        for (String dataElement : arrayList) {
            String arg = dataElement.replaceAll("\\s", "");
            if (fieldNoWhitespaces.equals(arg)) arrayList.remove(dataElement);      
        }

        //just to check for correctness
        for (String dataElement : arrayList) {
            System.out.println(":::" + dataElement);

            int count = 0;
            for (int i = 0; i < dataElement.length(); i++) {
                if (Character.isWhitespace(dataElement.charAt(i))) {
                    count++;
                }
            }

        System.out.println(":::Whitespaces:::" + count);
    }

输出:

  

::: zj4e 32 4 45

     

:::空白字符::: 6

     

::: ab2 56 2 45

     

:::空白字符::: 3