【发布时间】:2015-12-08 02:18:53
【问题描述】:
我有两个 CSV 文件:“userfeatures”和“itemfeatures”。
我应该将每一行 userfeatures 与每一行 itemfeatures 进行比较,以找到每行的匹配项(交叉点)。 比如userfeature文件的第一行是:
005c2e08","Action","nm0000148","dir_ nm0764316","India"
现在,我需要找到此行(与 user-1 相关)与第二个文件“itemfeatures”的每一行的交点。第二个文件具有相同的结构,例如,第一个比较将与“itemfeatures”的第一行,即:
"tt0306047","Comedy","nm0267506,nm0000221,nm0356021","dir_ nm0001878","USA,Canada"
这是我迄今为止尝试过的:
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader userfeatures = new BufferedReader(new FileReader("userfeatures.csv"));
BufferedReader itemfeatures = new BufferedReader(new FileReader("itemfeatures.csv"));
ArrayList<String> userlines = new ArrayList<>();
ArrayList<String> itemlines = new ArrayList<>();
String Uline = null;
String Iline = null;
while ((Uline = userfeatures.readLine()) != null) {
for (int i=1; i< userlines.size(); i++){
userlines.add(Uline);
intersect(Uline, Iline).size();
}
}
// System.out.println(Uline);
userfeatures.close();
itemfeatures.close();
}
static ArrayList<String> intersect(String Uline, String Iline) {
ArrayList<String> result = new ArrayList<String>();
result.retainAll(Iline);
return result;
}
}
似乎我不能对“String”类型使用retainAll,所以我想知道如何解决这个问题?我在这里搜索了很多,但我发现的只是寻找数组的交集,除了this one。 (但这篇文章与我的情况不同,因为它比较了字符串中的每个字符,而我需要逐字比较)。
【问题讨论】: