簡體   English   中英

從Java屬性對象中刪除多個條目的有效方法

[英]Efficient way of removing multi entries from Java Properties Object

我有一個大約有10k元素的Properties對象。 我想刪除其鍵以特定文本開頭的條目(鍵/值)。 目前,我正在使用此代碼來執行此操作:

Properties temp = new Properties();
myProperties.keySet().forEach(key -> {
    if (!key.toString().startsWith("specificText")){
        temp.setProperty(key, myProperties.get(key));
    }
});
myProperties = temp;

另一種解決方案是使用putAll而不是多次調用setProperty:

Properties temp = new Properties();
temp.putAll(myProperties.entrySet().stream()
    .filter(entry -> !entry.getKey().toString().startsWith("specificText")     
    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
myProperties= temp;

但是以上解決方案都無法滿足我的工作需要。 我確信應該有一個更好的方法來刪除不需要的屬性。 任何幫助是極大的贊賞。

修改地圖的keySet直接影響地圖本身:

myProperties.keySet().removeIf(key -> key.toString().startsWith("specificText"));

Map.keySet()文檔中

該集合支持元素刪除,這會從地圖中刪除相應的映射…

暫無
暫無

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

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