簡體   English   中英

刪除awt java中列表中的字符串

[英]remove string in list in awt java

在我的應用程序中,我應該在線程上運行時從列表中刪除一個字符串,但是我遇到了類似的異常,

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: item gh not found in list
    at java.awt.List.remove(Unknown Source)
    at org.sample.ChatClient$updateClient$1.run(ChatClient.java:200)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

碼:

final Map<String, String> liHashMap=list;
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        for (Entry<String, String> entry : liHashMap.entrySet()) {
            String client_Name=entry.getKey();
            if(!checkList.containsKey(client_Name)) {
                lst.add(client_Name + "\n");
                checkList.put(client_Name, ipAddress);
            }
        }
        for (Entry<String, String> entry : checkList.entrySet()) {
            String client_Name=entry.getKey();
            if(!liHashMap.containsKey(client_Name)){
                lst.remove(client_Name);//Remove string from list
                checkList.remove(client_Name);
        }
    } 

問題在這里。 更改此:

if(!liHashMap.containsKey(client_Name)){
                lst.remove(client_Name);//Remove string from list
                checkList.remove(client_Name);
        }

對此:

if(liHashMap.containsKey(client_Name)){
                lst.remove(client_Name);//Remove string from list
                checkList.remove(client_Name);
        }

我假設您的哈希圖是要從列表中刪除的項目的后備存儲。 對? 因此,僅當鍵在哈希映射中且因此在列表中時,才應刪除鍵。

如果這不是它的工作方式,則您需要維護一個應刪除的項目列表,並且已確認實際上已在列表中,然后將其刪除。 像這樣:

if(toBeRemovedMap.containsKey(client_Name)){
                lst.remove(client_Name);//Remove string from list
                checkList.remove(client_Name);
        }

如果所傳遞的值在java.awt.List中不存在,則將拋出IllegalArgumentException

如果使用java.util.List ,則如果傳遞的值存在,則返回true否則返回false

暫無
暫無

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

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