在发布此文章之前,我做了一些调查,发现无需遍历整个List即可找到所需数据的最佳方法是使用HashMap。现在,我以前从未使用过HashMaps,这使我非常复杂。
提供此客户端类
public class Client {
private String nroClient;
private String typeDoc;}
我必须获得一个具有唯一nroClient的typeDoc
我已经走了
private String getTypeDoc(List<Client> clients, String nroClient) {
Map <String, Client> map = new HashMap<String, Client>();
for (Client client : clients)
{
map.put(client.getNroClient(), client);
}
}
这似乎根本不正确,我也不知道该如何前进。我非常感谢您的投入。抱歉,如果以前有人问过这个问题,我真的想在发布之前找到解决方案。谢谢
答案 0 :(得分:2)
您基本上已经掌握了它,但是构建地图与循环列表相比显然很慢(实际上甚至更慢)。
给定一个j.u.List实例,您将无法回答以下问题:“让我在此列表中获得ID为x的课程,并快速进行操作”。
解决方案是完全删除列表,并将其作为地图。
如果您还需要类似列表的内容(例如,您需要回答“让我成为第18个客户”的问题),则可以使用LinkedHashMap
来记住添加顺序东西,但是它仍然没有.get(18)方法。如果需要,您可以使用一个类来表示“客户”的概念,在内部它既有一个列表又有一个映射,它具有一个add方法,可将您的客户添加到这两个数据结构中,现在您可以快速回答“让我成为第18位客户”和“让我获得具有此ID的客户”。
答案 1 :(得分:2)
您要退回比赛吗?:
private String getTypeDoc(List<Client> clients, String nroClient)
{
String typeDocFound = null;
for (Client client : clients)
{
if(client.getNroClient().equals(nroClient)
{
typeDocFound = client.getTypeDoc();
break;
}
}
return typeDocFound;
}