Получить список Objfrom <Obj>с указанным идентификатором без необходимости перебирать весь список - PullRequest
0 голосов
/ 09 сентября 2018

Я провел небольшое исследование, прежде чем опубликовать это, и обнаружил, что лучший способ найти нужные мне данные без необходимости перебирать весь список - это использовать HashMap. Теперь мне никогда не приходилось использовать HashMaps раньше, и это сильно меня усложняет.

Данный класс клиента

public class Client {
private String nroClient;
private String typeDoc;}

Мне нужно получить typeDoc с уникальным nroClient

Я получил это далеко

    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);
    }
}

Это просто не совсем правильно, и я понятия не имею, как продвигаться. Я бы очень признателен за любой вклад. Извините, если об этом уже спрашивали, я действительно пытался найти решение перед публикацией. Спасибо

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вы пытаетесь вернуть матч?:

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;
}
0 голосов
/ 09 сентября 2018

У вас это есть, но построение карта, очевидно, слишком медленная (на самом деле даже медленнее) по сравнению с простым зацикливанием списка.

Учитывая экземпляр j.u.List, вы НЕ МОЖЕТЕ ответить на вопрос «найдите мне класс в этом списке с идентификатором x и сделайте это быстро».

Решение состоит в том, чтобы полностью удалить список и создать карту.

Если вам также нужны списочные аспекты (например, вы должны быть в состоянии ответить на вопрос «достаньте мне 18-го клиента»), вы можете использовать LinkedHashMap, который запоминает порядок, в котором вы добавили вещи, но он по-прежнему не имеет ничего общего с методом .get (18). При необходимости у вас может быть класс для представления понятия «клиенты», внутренне он имеет ОБА список и карту, у него есть метод add, который добавляет вашего клиента в обе структуры данных, и теперь вы может быстро ответить «получи мне 18-го клиента» и «получи мне клиента с этим идентификатором».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...