使用HashMaps是否可以返回值低于设定阈值的所有键?

时间:2017-05-17 10:04:59

标签: java sorting hashmap

如果import pandas as pd dates = [pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'), pd.to_datetime('2014-03-13', format='%Y-%m-%d'),pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d'), pd.to_datetime('2014-03-14', format='%Y-%m-%d')] values = [-3,-6,-3.2,-3.1,-5,-3.4,-6.2,-3.2,-3.2,-5.9] Ids = [1,2,3,4,5,1,2,3,4,5] df = pd.DataFrame({'Id': pd.Series(Ids, index=dates), 'value': pd.Series(values, index=dates)}) df = df.groupby([df.index,'Id']).sum() 的值低于某个值,是否可以返回HashMap的所有值?这是哈希:

Map<String, Integer> StockIO = new HashMap<>();

String是库存商品,Integer是库存价值。

我确定我在这里错过了一些简单的东西。

这是使用jbutton点击的正确工作和测试代码,然后打印到textarea:

private void OrderActionPerformed(java.awt.event.ActionEvent evt) {
    Set<String> keys = new HashSet<>();
    for(Map.Entry<String,Integer> entry: StockIO.entrySet()) 
    {
        if (entry.getValue() <= 10) 
        {
            keys.add(entry.getKey());
            Oresult.setText(entry.getKey());
        }   
    }
}

3 个答案:

答案 0 :(得分:0)

是的,但效率不高。如果您想要订购,请使用有序地图,即TreeMap

答案 1 :(得分:0)

您想要的是有效过滤您的密钥集合。

使用此代码,您将获得值低于或等于特定阈值的所有键。

public static Set<String> keysWithValuesBelowThreshold(Map<String,Integer> map, int threshold) {
  Set<String> keys = new HashSet<>();
  for(Map.Entry<String,Integer> entry: map.entrySet()) {
    if (entry.getValue() <= threshold) {
      keys.add(entry.getKey());
    }
  }
  return keys;
}

使用Java 8:

public static Set<String> keysWithValuesBelowThreshold(Map<String,Integer> map, int threshold) {
  return map.entrySet().stream()
      .filter(e -> e.getValue() <= threshold)
      .map(Map.Entry::getKey)
      .collect(Collectors.toSet());
}

答案 2 :(得分:0)

我没有完全解答您的问题,但请查看下面的代码。可能是你想要的:

HashMap<String,Integer> jj=new HashMap<String, Integer>();
jj.put("A",10);
jj.put("B",20);
jj.put("c",30);
jj.put("Bd",50);
jj.put("Af",40);
jj.put("Bd",240);
jj.put("Ads",130);
jj.put("Bde",240);
jj.put("As",130);
jj.put("Bfe",210);
int threshold=100;
for(String key:jj.keySet()){
    String stock_item=key;
    Integer stock_value=jj.get(key);
    if(stock_value<threshold)
        System.out.println("Item:"+stock_item+" "+" Value:"+stock_value+"\n");
    }`