[英]Search for one element of an ArrayList and return a List of all objects that contains that element
這個問題似乎微不足道,但是我找不到正確的方法。
我有一個存儲在服務器中的Map<Node, Integer>
,其中每個節點都由其hostName(字符串)和serviceList(字符串列表)定義,而port顯然是Node使用的端口。 因此,映射的每個條目都為我提供了三個信息:hostName,serviceList和port。
我正在尋找一種方法來搜索元素,該元素包含在已經存儲在地圖中的一個或多個serviceList中,並返回對象“ serviceProviders”的列表。 serviceProvider由hostName和port定義。 所以基本上:
我以為這樣的事情可能有用,但事實並非如此:
public List<ServiceProvider> getProvidersForService(String serviceName) throws TException {
ServiceProvider serviceProvider = new ServiceProvider();
List<ServiceProvider> result = new ArrayList<>();
for(Map.Entry<Node, Integer> pair : nodePorts.entrySet()) {
//problems start here
List<String> nodeService = pair.getKey().serviceList;
for(String s : nodeService) {
if(s.contains(serviceName))
result.add(serviceProvider);
break;
}
}
return result;
}
哪個是實現此目的的正確方法?
代碼問題是您沒有在添加到列表之前不更新serviceProvider
對象,當前正在添加空的ServiceProvider
對象:
public List<ServiceProvider> getProvidersForService(String serviceName) throws TException {
ServiceProvider serviceProvider = new ServiceProvider();
List<ServiceProvider> result = new ArrayList<>();
for(Map.Entry<Node, Integer> pair : nodePorts.entrySet()) {
//problems start here
List<String> nodeService = pair.getKey().serviceList;
for(String s : nodeService) {
if(s.contains(serviceName))
// **update service provide before adding here by putting host/port**
result.add(serviceProvider);
break;
}
}
return result;
}
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.