JAVA - чтение файла CSV на основе другого файла CSV - PullRequest
0 голосов
/ 20 сентября 2019

Я изо всех сил стараюсь сделать эту работу правильно.Итак, у меня есть два CSV-файла.enter image description here

А этот

enter image description here

Итак, главное.У меня есть SearchTerms во втором CSV.В первом CSV у меня также есть SearchTerms, который должен работать как «тег».Мне нужно получить идентификаторы продуктов из первого CSV, сохраненного в List на основе того, что используется searchterm из второго csv.Поэтому, когда используется Akt (pan), экспортируется один набор List IDS.Если существует больше наборов идентификаторов Akt (pan), они, я думаю, сохраняются в одном списке в виде массива.

Я попытался прочитать его с помощью CSVloaders и выполнить поиск с помощью метода lookup ()

private final Map<List<String>, Comparison> data = Maps.newHashMap();
public Comparison lookup(String searchTerm) {
    return data.get(searchTerm);
}

Где класс сравнения -

public class Comparison {
@Parsed(field = "ProductId1")
private String productId1;

@Parsed(field = "ProductId2")
private String productId2;

@Parsed(field = "ProductId3")
private String productId3;

@Parsed(field = "SearchTerm")
private String SearchTerm;


public String getProductId1() {
    return productId1;
}

public String getProductId2(){
    return productId2;
}

public String getProductId3(){
    return productId3;
}

public List<String> getProductIds(){
    List<String> ids = new ArrayList<>();
    Collections.addAll(ids, productId1, productId2, productId3);
    return ids;
}

}

Мое решение было плохим.Я получал NullPointerException постоянно всякий раз, когда пытался использовать метод lookup ().

У вас есть идеи, как заставить это работать?Спасибо Ою

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

В качестве подхода я бы проанализировал 2-й CSV и сохранил все поисковые термины в наборе.После этого прочитайте первую CSV построчно и для каждой строки, если поисковый термин существует в наборе, добавьте новую запись в карту> (ключ - поисковый термин, набор - productId).

Будеттакже рекомендую http://opencsv.sourceforge.net/

0 голосов
/ 20 сентября 2019

Проблема с типом данных ключ в вашем HashMap .Это должна быть строка в соответствии с вашими данными, а не Список <> .

private final Map<String, Comparison> data = Maps.newHashMap();
public Comparison lookup(String searchTerm) {
    return data.get(searchTerm);
}

Тогда у возвращающегося объекта (типизированное Сравнение) будут все идентификаторы продуктов для данного поискового термина.

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