簡體   English   中英

從String []轉換為Arraylist,刪除元素並轉換並返回String []

[英]Converting from String[] to Arraylist, removing elements and converting and back to String[]

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函數,理想情況下,該函數應從第一個列表中刪除元素“ bob”和“ alan”,並最終刪除輸出。

BTW使用remove到stringList.remove(“ bob”)的工作方式是從ArrayList中消除該特定字符串。 只是想知道我能做些什么來確保stringList.removeAll(....)工作。

感謝您的任何幫助。

您有以下錯誤:

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

您應該使用TxtStr2

List<String> stringList2 = new ArrayList<String>(Arrays.asList(TxtStr2));
  • ArrayList的reomoveAll方法肯定可以正常工作。 創建第二個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);

您可能最終將刪除所有內容,因為您的列表創建基於相同的數組。 更改

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM