Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从哈希表中删除这些值?_Java_Collections_Hashtable - Fatal编程技术网

Java 如何从哈希表中删除这些值?

Java 如何从哈希表中删除这些值?,java,collections,hashtable,Java,Collections,Hashtable,在我的场景中,哈希表是这样的 AId=1 BId=1 catalogId=10053 reason_1=RET-KP reason_2=RET-KP quantity_1=1.0 ItemId_1=468504 quantity_2=1.0 ItemId_2=468505 现在,当reason\u i=RET-KP 即delete ItemId\u 1和quantity\u 1 其中,reason\u i是reason\u 1,reason\u 2 因此,我如何迭代此哈希表并根据键的值删除键(

在我的场景中,哈希表是这样的

AId=1
BId=1
catalogId=10053
reason_1=RET-KP
reason_2=RET-KP
quantity_1=1.0
ItemId_1=468504
quantity_2=1.0
ItemId_2=468505
现在,当
reason\u i=RET-KP

delete ItemId\u 1和quantity\u 1
其中,
reason\u i
reason\u 1
reason\u 2


因此,我如何迭代此哈希表并根据键的值删除键(动态),然后再次将其存储在哈希表中。

检查此项将解决您的问题

 package com.loknath.lab;



 public class HashTableDemo {
public static void main(String args[]) {

    Hashtable htable = new Hashtable(3);
    boolean deleteStatus;
    ArrayList<String> list = new ArrayList<String>();
    // populate the table
    htable.put("AId", 1);
    htable.put(" catalogId", 2);
    htable.put(" ItemId_1", 43);
    htable.put("ItemId_2", 43);
    htable.put("bid", 54.45);

    Set<String> keys = htable.keySet();

    for (String key : keys) {

        System.out.println(key);
        deleteStatus = check(key);
        if (deleteStatus) {
            list.add(key);
        }
    }

    for (String string : list) {
        htable.remove(string);
    }

}

public static boolean check(String key) {
    boolean status = false;
    status = key.contains("_");
    return status;
}

 }
package com.loknath.lab;
公共类HashTableDemo{
公共静态void main(字符串参数[]){
Hashtable htable=新的Hashtable(3);
布尔删除状态;
ArrayList=新建ArrayList();
//填充表格
htable.put(“AId”,1);
htable.put(“catalogId”,2);
htable.put(“ItemId_1”,43);
htable.put(“ItemId_2”,43);
htable.put(“投标”,54.45);
Set keys=htable.keySet();
用于(字符串键:键){
系统输出打印项次(键);
deleteStatus=检查(键);
如果(删除状态){
列表。添加(键);
}
}
用于(字符串:列表){
htable.remove(字符串);
}
}
公共静态布尔检查(字符串键){
布尔状态=假;
状态=键。包含(“”);
返回状态;
}
}

可能的重复,您应该重新考虑您的设计。像这样在地图中存储带有数字后缀的字符串键不是您应该做的事情。看起来您应该有一个
列表
,其中项将是一个包含ID、catalogId、原因、数量等的类。Java是一种OO语言。使用对象。在这里,您正在检查键包含
\u
时的条件,但我需要根据它们的值删除这些动态键。