【发布时间】: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 文件;如果没有,则不要添加它。加价的时候,找不到玩家的名字怎么不加价呢?我怎么知道去除价格的指数?我曾想过重新打开(导入)文件再次搜索并从那里删除,但我觉得这样做效率很低。
编辑:我实际上已经考虑过创建一个由listingNameList 和pricesList 组成的ArrayList,我相信这比重新导入文件并重新编写它更有效?
【问题讨论】:
-
您知道如何创建自己的课程吗?这似乎是创建像
CardListing这样的类的好方法。您可以添加字段name、playerName和price。查看Objected-Oriented Programming tutorials。创建自己的类后,您可以构建一个包含这些对象的 ArrayList。
标签: java arrays regex arraylist