兩組字符串去重/兩個列表去重

一 需求

已知字符串A="1,2,3,4,5,6,7,8"
已知字符串B="1,3,4"
獲取他們不相同的部分

二 延伸

當後端需要返回給前端完整的任務列表, 任務列表一共有八個, 已知完成了三個任務	
(從數據庫中獲取), 如何取得未完成的任務列表)

三 思路

方法一: 
	 把總任務列表和已完成的任務列表, 放入list的集合中,
	 遍歷總完成的任務列表, 依次跟已完成任務列表比較, 
	 如果總任務列表的字符串不在已完成任務列表, 則放入未完成列表中.

方法二:
	 把總任務列表和已完成的任務列表, 放入list的集合中,
	 遍歷總完成的任務列表, 使用contains()方法判斷已完成列表的字符串是否包含總任務列表中的字符串, 
	 把不包含的放在未完成列表中.

方法三: 
	 把總任務列表和已完成的任務列表, 放入list的集合中,
	 兩個list去重最簡單的方法, list1.removeAll(list2)

四 代碼

方法一:

final String taskListString = "1,2,3,4,5,6,7,8";
String[] taskArray = taskListString.split(",");
List<String> list = Arrays.asList(taskArray);

List<String> finishedStr = new ArrayList<String>();
finishedStr.add("1");
finishedStr.add("3");
finishedStr.add("4");
    
List<String> unfinishedStr = new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
    boolean flag =false;
    for (int j = 0; j < finishedStr.size(); j++) {
        if(list.get(i).equals(finishedStr.get(j))){
              flag = true;
              break;
          }
    }
    if(flag == false){
       unfinishedStr.add(list.get(i));
    }
}
System.out.println(unfinishedStr);
	
注意點:   在字符串\集合比較的時候, 只能equals 方法, 用==是無法判斷的.

在這裏插入圖片描述

方法二:

final String taskListString1 = "1,2,3,4,5,6,7,8";
String[] taskArray = taskListString1.split(",");
List<String> ActionStr = Arrays.asList(taskArray);

final String taskListString2 = "1,3,4";
String[] finishedArray = taskListString2.split(",");
List<String> finishedStr= Arrays.asList(finishedArray);

List<String> unfinishedStr = new ArrayList<String>();
for (String taskStr : ActionStr) {
    if(!finishedStr.contains(taskStr)){
          unfinishedStr.add(taskStr);
     }
}
System.out.println(unfinishedStr);

注意: 使用contain方法時, 字符串B必須是字符串A的子集.
	如果字符串B不在A的範圍內,也不會顯示

在這裏插入圖片描述

方法三:

    final String taskListString = "1,2,3,4,5,6,7,8";
    String[] taskArray = taskListString.split(",");
    List<String> list = Arrays.asList(taskArray);

    List<String> finishedStr = new ArrayList<String>();
    finishedStr.add("1");
    finishedStr.add("3");
    finishedStr.add("4");

    List<String> newList  = new ArrayList<>(list);
    newList.removeAll(finishedStr);
    System.out.println(newList);

注意: 使用removeAll()方法時, 字符串B必須是字符串A的子集.
	否則可能跟你想要的結果有所偏差

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章