gpt4 book ai didi

java - 找到两个字符串的交集

转载 作者:行者123 更新时间:2023-11-29 04:55:00 28 4
gpt4 key购买 nike

我有两个 CSV 文件:“userfeatures”和“itemfeatures”。

我应该将每一行用户特征与每一行项目特征进行比较,以找到与每一行的匹配项(交叉点)。例如userfeature文件中的第一行是:

005c2e08","行动","nm0000148","dir_ nm0764316","印度"

现在,我需要找到此行(whish 与 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 之外的数组的交集。 . (但这篇文章也与我的情况不同,因为它比较了字符串中的每个字符,而我需要逐字比较)。

最佳答案

尝试转换 UlineIline变成单词,然后改用Set<String>而不是 Array<String> :

static Set<String> intersect(String Uline, String Iline) {
Set<String> result = new HashSet<String>(Arrays.asList(Uline.split(",")));
Set<String> IlineSet = new HashSet<String>(Arrays.asList(Iline.split(",")));
result.retainAll(IlineSet);
return result;
}

关于java - 找到两个字符串的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146866/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com