我正在努力做到以下几点:
我需要创建一个方法,它返回一个由一个或多个参数指定的特定选择条件的所有值的集合。我的地图由PPS数字(键)和值(城镇、姓名、工作地点)组成,两者都是字符串。然而,我不确定我需要做什么才能在地图中获得placin之后的值。
/**
*This method returns a collection of all people who work for CO-OP
*/
public Set<String> selectKeys(String factory)
{
for (Set<String>eachTaxPayers : taxPayersList.values())
{
if(taxPayersList.values().contains(factory))
{
Set<String>eachClients = taxPayersList.keySet();
System.out.println(taxPayersList.keySet());
}
}
return null ;
}
有人能帮帮我吗?
这是一个如何填充Map的代码。
public class Tax
{
Map<String, Set<String>>taxPayersList;
public Tax()
{
taxPayersList = new HashMap<>();
Set<String>taxPayersDetails = new HashSet<>();
taxPayersDetails.add(" Eddie Donegan");
taxPayersDetails.add("Prodieco");
taxPayersDetails.add("Limerick");
taxPayersList.put("4481908A", taxPayersDetails);
taxPayersDetails = new HashSet<>();
taxPayersDetails.add(" Paddy Power");
taxPayersDetails.add("Covenant");
taxPayersDetails.add("Limerick");
taxPayersList.put("6088989B", taxPayersDetails);
taxPayersDetails = new HashSet<>();
taxPayersDetails.add(" Mikey Obama");
taxPayersDetails.add("Prodieco");
taxPayersDetails.add("Limerick");
taxPayersList.put("6788910B", taxPayersDetails);
}
}
我只想返回为同一家公司工作的人的密钥( PPS号码
发布于 2018-08-20 08:18:58
public Set<String> selectKeys(String factory) {
// our return Set
Set<String> factoryWorkers = new HashSet<>();
// Let's iterate over the map entries
for (Map.Entry entry : taxPayersList.entrySet()) {
// Let's grab the value of the current map entruy
Set<String> eachTaxPayers = entry.getValue()
// Risky move
if(eachTaxPayers.contains(factory)) {
// add the key (PPS) to the return set
factoryWorkers.add(entry.getKey());
}
}
return factoryWorkers;
}
仅供参考,标记为"Risky“的行不是最好的方法。
虽然不太可能,但城市有可能与工厂同名。
你最好在集合上使用迭代器,并与第二个值进行比较。
更好的是,你可以有一个地图而不是一个Map>
其中Employee包含name、city和factoryName等字段。
https://stackoverflow.com/questions/36782824
复制相似问题