ある文字列配列の単語が別の文字列配列に含まれているかどうかを調べる方法がわかりません。 .contains()は文字列配列に適用することはできませんので、上記のコードは、現在、私にエラーを与えている文字列配列に別の文字列配列内の単語が含まれていないか確認する
FileInputStream fis = new FileInputStream("TranHistory.csv");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
CSVReader reader = new CSVReader(isr);
String[] groceries = new String[]{"albertsons", "costco"};
for (String[] cols; (cols = reader.readNext()) != null;) {
if(cols[4].toLowerCase().contains(groceries)){
System.out.print(cols[4]);
}
}
:これは私がこれまで持っているものです。私はこれにif文を変更する場合、これが作品のみ:
if(cols[4].toLowerCase().contains("albertsons")){
System.out.print(cols[4]);
}
私の問題がString []食料品は、多くの食料品店を持っているとしているということですので、私は[] StringにString []型COLを比較する食料品がほとんどだと思いますこれを行う効率的な方法私はちょうどそれを実装するのに苦労しています。
SOLUTION:
私はあなたがforループのネストされたをしなければならない...それを考え出しました。これは私がやったことです:
Set<String> groceries = Set.of("albertsons", "costco");
for (String[] cols; (cols = reader.readNext()) != null;) {
if (groceries.contains(cols[4].toLowerCase()){
System.out.print(cols[4]);
}
}
それはあなたの場合は同じようにSet
で検索すると、線形時間がかかることはありません。
String[] groceries = {"albertsons", "costco"};
for (String[] cols; (cols = reader.readNext()) != null;) {
for (int i = 0; i < groceries.length; i++){
if(cols[4].toLowerCase().contains(groceries[i]))
{
System.out.print(cols[4]);
}
}
}
私はエラーを取得しています: – Stephan
'を設定#のof'はまだしていない場合は、更新する必要がありますJavaの9に導入されたSet.of方法を解決することはできません! –
更新しない(またはできない)場合は、 'Set'を' new HashSet <>(Arrays.asList( "albertsons"、 "costco")); ' –