第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從多個列表創(chuàng)建匹配對象的列表并刪除匹配列表中的對象以使其反映在原始列表中

如何從多個列表創(chuàng)建匹配對象的列表并刪除匹配列表中的對象以使其反映在原始列表中

素胚勾勒不出你 2023-08-16 17:41:42
如果有人問過這個問題,我很抱歉,但我無法從谷歌搜索中找到類似的內(nèi)容,所以就到這里。假設(shè)我有兩個對象筆記本public class NoteBook {    private String name;    private String description;    public NoteBook(String name, String description) {        this.name = name;        this.description = description;    }}和筆記public class Note {    private String sourceNoteBook    private String name;    private String category;    private String details;    public Note(String sourceNoteBook,String name, String category, String details) {        this.sourceNoteBook = sourceNoteBook;        this.name = name;        this.category = category;        this.details = details;    }}在程序中,用戶可以創(chuàng)建多個NoteBook對象,每個NoteBook存儲可變數(shù)量的注釋。最終我想添加一個搜索功能,可以按類別或名稱搜索筆記并返回找到的筆記列表。通常我會使用 2 個 For 循環(huán)來迭代筆記本列表,然后迭代每個筆記本的筆記列表并比較字符串。像這樣的東西:    For (NoteBook noteBook: noteBooks) {        For(Note note :noteBooks.getNoteList){            if (note.getCategory().contains(someString)) {                matchingNotes.add(notes);            }        }    }但是,我現(xiàn)在希望能夠從匹配注釋列表中刪除注釋,以便原始筆記本中的注釋也被刪除。存儲和搜索這兩個類的最佳方法是什么,以便我可以實現(xiàn)這樣的功能。編輯:只是為了澄清,最終結(jié)果是我希望用戶能夠在所有筆記本中搜索筆記類別,然后程序?qū)⒎祷嘏c該類別匹配的筆記列表。然后,他/她可以從該列表中刪除筆記,這樣它也會在原始筆記本中刪除。例如,完全從程序中刪除。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗 獲得超9個贊

迭代器:

可能是最簡單的解決方案。由于 java 在循環(huán)中使用迭代器foreach,因此性能是相同的。


For (NoteBook noteBook: noteBooks) {

  Iterator<Note> it = noteBooks.getNoteList().iterator();

  while (it.hasNext()) {

    Note note = it.next();

    if (note.getCategory().equals(someString)) {

      it.remove();

    }

  }

}

SQL:

這將是最佳的。然而,即使使用輕量級的東西,例如 H2 或 SQLite,也需要重構(gòu)。在非常輕量級的應(yīng)用程序中也不是一個選項。


高效:

如果您只按類別或名稱搜索,您可以使用 2 個地圖:


Map<String, Note> notesByCategory;

Map<String, Note> notesBytName

這將需要O(n)內(nèi)存來存儲映射,但會及時進(jìn)行非常高效的查找O(1)(與當(dāng)前的O(n)相比)。我會避免這種解決方案,因為很容易在筆記內(nèi)容和地圖之間實現(xiàn)不一致的狀態(tài)。


編輯:


var newNoteNames = newList.stream().map(Note::getName).collect(Collectors.toSet());

var oldNoteNames = noteBooks.stream().flatMap(Notebook::getNodeList).map(Note::getName).collect(Collectors.toSet());


var removedNames = oldNoteNames.removeAll(newNoteNames);


for (var removedName : removedNames) {

  for (NoteBook noteBook: noteBooks) {

    Iterator<Note> it = noteBooks.getNoteList().iterator();

    while (it.hasNext()) {

      Note note = it.next();

      if (note.getName().contains(removedName)) {

        it.remove();

      }

    }

  }

}


查看完整回答
反對 回復(fù) 2023-08-16
?
繁星點點滴滴

TA貢獻(xiàn)1803條經(jīng)驗 獲得超3個贊

為什么不將筆記本信息存儲在 note 類中呢?


public class Note {

    private NoteBook sourceNoteBook;

    private String name;

    private String category;

    private String details;


    public Note(NoteBook sourceNoteBook,String name, String category, String details) {

        this.sourceNoteBook = sourceNoteBook;

        this.name = name;

        this.category = category;

        this.details = details;

    }

}

需要注意的每個數(shù)據(jù)操作都會影響存儲它的筆記本


查看完整回答
反對 回復(fù) 2023-08-16
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊

當(dāng)鍵是筆記并且值是筆記本時,您可以創(chuàng)建一個地圖 keySet 將返回給用戶,一旦他選擇了該鍵,您就有了知道要從哪個筆記本中刪除的值,并且您有可以刪除該筆記本的鍵筆記。這是你的意思嗎?



查看完整回答
反對 回復(fù) 2023-08-16
  • 3 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號