Найдите имя - оно не найдено, затем не пишите его и его цену в файл - PullRequest
0 голосов
/ 19 марта 2020

Вчера я задал вопрос о поиске строки и, если она не найдена, то не добавляйте запись в файл .csv. Я получил ответ, и предложенный / пересмотренный код работал хорошо. Тем не менее, я добавил цену к коду, и теперь я застрял.

package sportsCardsTracker;

import java.io.*;
import java.text.*;
import java.util.*;
import java.util.stream.Collectors;

public class Test_Mark6 {
    public static ArrayList<String> listingNameList;
    public static ArrayList<String> pricesList;
    public static void main(String[] args) throws IOException, ParseException {
        listingNameList = new ArrayList();
        listingNameList.add("LeBron James 2017-18 Hoops Card");
        listingNameList.add("Stephen Curry Auto Patch, HOT INVESTMENTS!");
        listingNameList.add("Michael Jordan 1998 Jersey Worn Card");
        listingNameList.add("Char Barkley NBA Hoops Auto");

        ArrayList<String> playersNamesList = new ArrayList();
        playersNamesList.add("LeBron James");
        playersNamesList.add("Stephen Curry");
        playersNamesList.add("Michael Jordan");
        playersNamesList.add("Charles Barkley");

        pricesList = new ArrayList();
        pricesList.add("$5");
        pricesList.add("$5000");
        pricesList.add("$7000");
        pricesList.add("$500");

        String directory = System.getProperty("user.dir");
        File file = new File(directory + "/src/sportsCardsTracker/test.csv");
        FileWriter fw = new FileWriter(file, false); //true to not over ride 


        List<String> temp = new ArrayList<>();
        for (String listingNames : listingNameList) {
            temp = playersNamesList.parallelStream().filter(s -> listingNames.toLowerCase().contains(s.toLowerCase())).map(s -> s).collect(Collectors.toList()); 
            if(temp.size() > 0){
                System.out.println(temp.get(0));
                //fw.write(String.format("%s, %s\n", temp.get(0));
            }
        }
    }
    }

Я хотел сделать что-то вроде, если код находит имя игрока (пишется правильно) в listingNameList, затем запишите его в файл test.csv; если нет, то не добавляйте его. Когда я добавил к ней цену, как бы я не добавил цену, если не найду имя игрока? Откуда мне знать индекс для удаления цены? Я думал о повторном открытии (импорте) файла снова для поиска и удаления оттуда, но я чувствую, что это будет очень неэффективно.

РЕДАКТИРОВАТЬ: Я на самом деле думал о создав ArrayList, состоящий из listingNameList и pricesList тоже, я считаю, что это будет работать лучше, чем повторный импорт файла и его перезапись?

1 Ответ

0 голосов
/ 19 марта 2020

То, что я сделал, было моей идеей №2. Создайте новый пустой ArrayList, скажем "temp", который имеет listingNameList и pricesList (не забудьте поставить pricesList с String.valueOf). Оттуда я создал еще один ArrayList, который добавляет значения из "temp", только если имя найдено. Я все еще ищу лучший ответ для лучшей оптимизации, пожалуйста. Спасибо!

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