【问题标题】:Find a name - it not found, then do not write it and its price to the file找到一个名字 - 它没有找到,然后不要把它和它的价格写到文件中
【发布时间】:2020-03-18 21:07:40
【问题描述】:

昨天,我问了一个关于查找字符串的问题,如果没有找到,则不要将其添加到 .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 文件;如果没有,则不要添加它。加价的时候,找不到玩家的名字怎么不加价呢?我怎么知道去除价格的指数?我曾想过重新打开(导入)文件再次搜索并从那里删除,但我觉得这样做效率很低。

编辑:我实际上已经考虑过创建一个由listingNameListpricesList 组成的ArrayList,我相信这比重新导入文件并重新编写它更有效?

【问题讨论】:

  • 您知道如何创建自己的课程吗?这似乎是创建像CardListing 这样的类的好方法。您可以添加字段nameplayerNameprice。查看Objected-Oriented Programming tutorials。创建自己的类后,您可以构建一个包含这些对象的 ArrayList。

标签: java arrays regex arraylist


【解决方案1】:

我所做的是我的想法 #2。创建了一个新的空 ArrayList,例如 "temp",它同时具有 listingNameListpricesList(请记住将 pricesListString.valueOf 放在一起)。从那里,我创建了另一个 ArrayList,如果找到名称,它只会添加来自 "temp" 的值。我仍在寻求更好的答案以进行更好的优化。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 2015-01-21
    相关资源
    最近更新 更多