首页 / JAVA / java-如何提高此实现的效率
java-如何提高此实现的效率
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何提高此实现的效率,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1809字,纯文字阅读大概需要3分钟。
内容图文
我有一个需要处理传入对象的服务方法:(顺便说一下,这是伪代码)
public class IncomingParentObject {
public Collection<IncomingChildOject> childObjects;
}
public Class IncmoingChildObject {
public String name;
}
我有一个“客户端”的“注册表”,它关心传入的子对象的子集.在注册时,我们只知道“名称”.客户端对象封装了传输层的详细信息,以将信息转发到该对象.
public class Registry {
// String represents the name in the child object
public Map<String, Set<Client>> clients;
}
现在,服务类与此类似:
public void processIncmoingParentObject(IncomingParentObject parentObject) {
for (IncmoingChildObject childObject : parentObject.childObjects) {
Set<Client> clients = registry.clients.get(childObject.name);
for (Client client : clients) {
this.transportLayer.transportChildObject(childObject, client);
}
}
}
这会导致多次调用transportLayer(可能很昂贵或很及时).我想将其减少为基本上每个子对象的每个客户端一个传输.
transportLayer.transport(Client client, Set<IncmoingChildObject> childObjects);
有效的庄园将是扫描父母的子女以确定要发送给委托人的子女的子集.
解决方法:
我会使用地图来跟踪Set< IncomingChildObject>对于每个客户.
在未经测试的Java中:
public void processIncomingParentObject(IncomingParentObject parentObject) {
Map<Client,Set<IncomingChildObject>> childObjectsByClient =
new Map<Client,Set<IncomingChildObject>>();
for (IncomingChildObject childObject : parentObject.childObjects) {
Set<Client> clients = registry.clients.get(childObject.name);
for (Client client : clients) {
Set<IncomingChildObject> childObjects =
childObjectsByClient.get(client);
if (childObjects == null) {
childObjects = new Set<IncomingChildObject>();
childObjectsByClient.put(client, childObjects);
}
childObjects.add(childObject);
}
}
for (Entry<Client,Set<IncomingChildObject>> e : childObjectsByClient.entrySet()) {
this.transportLayer.transport(e.getKey(), e.getValue());
}
}
内容总结
以上是互联网集市为您收集整理的java-如何提高此实现的效率全部内容,希望文章能够帮你解决java-如何提高此实现的效率所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。