[英]Search for one element of an ArrayList and return a List of all objects that contains that element
The question seems trivial, but i can't find how to do it properly. 这个问题似乎微不足道,但是我找不到正确的方法。
I have a Map<Node, Integer>
memorized in a server, where each Node is defined by its hostName (a String) and its serviceList (a List of String), and port is obviously the port used by the Node. 我有一个存储在服务器中的
Map<Node, Integer>
,其中每个节点都由其hostName(字符串)和serviceList(字符串列表)定义,而port显然是Node使用的端口。 So every entry of the map gives me three informations: hostName, serviceList and port. 因此,映射的每个条目都为我提供了三个信息:hostName,serviceList和port。
I'm looing for a way to search for an element, that is contained into one or more serviceLists already memorized into the map, and return a list of objects "serviceProviders". 我正在寻找一种方法来搜索元素,该元素包含在已经存储在地图中的一个或多个serviceList中,并返回对象“ serviceProviders”的列表。 A serviceProvider is defined by hostName and port.
serviceProvider由hostName和port定义。 So basically:
所以基本上:
I thought something like this might have worked, but it's not: 我以为这样的事情可能有用,但事实并非如此:
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;
}
which is the correct way to implement this? 哪个是实现此目的的正确方法?
Problem with your code is you are not updating your serviceProvider
object before adding to the list, currently you are adding empty ServiceProvider
objects: 代码问题是您没有在添加到列表之前不更新
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;
}
Hope this helps. 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.