public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
String s = "nope";
String v = "nopenopes";
list.add(s);
list.add(v);
keywordCount(list, "nope");
}
public static int keywordCount(ArrayList<String> str , String keyword){
int count = 0;
for (int i = 0;i<str.size();i++){
while ((i= str.indexOf(keyword,i)) != -1) { // here is where I found the error
count++;
i += keyword.length();
}}
System.out.println(count);
return count;
}
Привет, я пишу фрагмент кода, который учитывает появление определенного ключевого слова внутри списка массивов. Он работал для строки строки, но не пытался при попытке сделать то же самое для arraylist. Может кто-то, пожалуйста, указать, что я сделал неправильно, и помочь мне исправить это. Заранее спасибо.
Вы можете подать в суд на Collections.frequncy()
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("a");
System.out.println(Collections.frequency(list,"a")); // out put is 2
Скажем, у вас есть List<String> list
тогда вы хотите найти число keyword
вхождения
затем
int numOfOccurrences= Collections.frequency(list,keyword)
Легко вы можете использовать метод contains()
;
public static int keywordCount(ArrayList<String> str , String keyword){
int count = 0;
for (int i = 0; i<str.size();i++){
if(str.get(i).contains(keyword))
count++;
}
}
используйте код ниже.
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("a");
// get all Unique keywords
Set<String> set = new HashSet<String>(list);
for(String keyword: set){
System.out.println(keyword + ": " + Collections.frequency(list, keyword));
}
}
Вывод:
b: 1
a: 2
Вы можете использовать Arrays.asList()
для создания своего List
.
public static void main(String[] args) {
System.out.println(keywordCount(Arrays.asList("nope", "nopenopes"), "nope"));
}
public static int keywordCount(List<String> al, String keyword) {
int count = 0;
for (String str : al) {
int i = 0;
while ((i = str.indexOf(keyword, i)) != -1) {
count++;
i += keyword.length();
}
}
return count;
}
Когда я запускаю выше, я получаю вывод
3
Одна из проблем в вашем коде была
i = str.indexOf(keyword,i)
В вашем столбце str
не является String
, это ArrayList
.