从String []转换为Arraylist,删除元素并转换并返回String []

时间:2017-06-14 06:16:25

标签: java arraylist removeall

String [] TxtStr = new String[] {"bob","alan", "sam"};
List<String> stringList = new ArrayList<String>(Arrays.asList(TxtStr));

String [] TxtStr2 = new String[] {"bob","alan"};
List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr));

stringList.removeAll(stringList2);
String[] bTxtStr = stringList.toArray(new String[stringList.size()]);

String output = "nnn";

for (int x=0; x<bTxtStr.length; x++){
    output +=bTxtStr[x];
}

目前这是一个Android项目的一小部分,我正在研究我必须比较2 String []的内容。

我遇到了很多问题,所以我开始使用2个String []的简单案例,分别包含2个和3个元素。在初始化String []之后,我将它们转换为ArrayLists并执行removeAll函数,理想情况下应删除元素&#34; bob&#34;和&#34;阿兰&#34;从第一个列表到最终输出。

BTW使用remove to stringList.remove(&#34; bob&#34;)在消除ArrayList中的特定字符串方面起作用。只是想知道我能做些什么来确保stringList.removeAll(....)有效。

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分:2)

你有错误:

List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr));

你应该使用TxtStr2

List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr2));

答案 1 :(得分:2)

  • reomove ArrayList的所有方法绝对可以正常工作。创建第二个ArrayList时出错了。
  • 为方便起见,您可以使用Java 8 Streams。请尝试以下代码。它会直接给你单个逗号分隔的字符串。你可以改变分离角色。
List<String> stringList = Arrays.asList("bob","alan", "sam");
List<String> stringList2 = Arrays.asList("bob","alan");
String mergedString = stringList.stream().filter(string ->!stringList2.contains(string)).collect(Collectors.joining(","));
System.out.println("Merged String: " + mergedString);

答案 2 :(得分:0)

您可能最终会删除所有内容,因为您创建的列表基于相同的数组。改变

List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr);

List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr2);