![](/img/trans.png)
[英]the quickest way to Implement an algorithm to count how many times each string is present in an array of strings using Java
[英]How to count strings added to a list array using count sub method and a target string in Java?
public class Remove {
public static void main(String[] args) {
ArrayList < String > y = new ArrayList < > ();
y.add("Go");
y.add("Home");
y.add("Go");
y.add("Home");
System.out.println(y);
countOccurence("Go", y);
System.out.println(y);
}
public static int countOccurence(String y, ArrayList < String > t) {
int count = 0;
for (int i = 0; i <= t.size(); i++) {
if (y.equalsIgnoreCase(t.get(i))) {
count++;
}
}
return count;
}
}
此代码不允许我打印子方法countOccurence返回的计数。 此代码应计算目标字符串出现在数组Y中的时间,然后将其返回到主数组,以便可以打印。 我该怎么做才能解决此问题?
这是因为您正在打印列表,而不是countOccurence
方法的结果。 要解决这个问题 -
将countOccurence
的结果countOccurence
在变量中
int count = countOccurence("Go", y);
在下一行中打印计数。
System.out.println(count);
只是一个可选的解决方案。 在Java8
,可以使用Stream API
进行计数。
Map<String, Long> counts =
listOfString.stream().collect(
Collectors.groupingBy(
Function.identity(), Collectors.counting()));
和结果代码;
public class Remove {
public static void main(String[] args) {
ArrayList< String > listOfString = new ArrayList < > ();
listOfString.add("Go");
listOfString.add("Home");
listOfString.add("Go");
listOfString.add("Home");
Map<String, Long> counts =
listOfString.stream().collect(
Collectors.groupingBy(
Function.identity(), Collectors.counting()));
System.out.println(counts.get("Go"));
System.out.println(counts.get("Home"));
}
}
要打印事件:
System.out.println("Occurence of 'Go' is " + countOccurence("Go", y));
您还应该删除更改i <= t.size();
到i < t.size();
以避免IndexOutOfBounds
错误。
public static void main(String[] args) {
ArrayList<String> y = new ArrayList<>();
y.add("Go");
y.add("Home");
y.add("Go");
y.add("Home");
System.out.println(y);
System.out.println("Occurence of 'Go' is " + countOccurence("Go", y));
}
public static int countOccurence(String y, ArrayList<String> t) {
int count = 0;
for (int i = 0; i < t.size(); i++) {
if (y.equalsIgnoreCase(t.get(i))) {
count++;
}
}
return count;
}
你可以直接打电话
System.out.println(countOccurrence("Go", y));
正确的代码是:
import java.util.ArrayList;
public class Remove {
public static void main(String[] args) {
ArrayList < String > y = new ArrayList < > ();
y.add("Go");
y.add("Home");
y.add("Go");
y.add("Home");
System.out.println(y);
System.out.println(countOccurence("Go", y));
}
public static int countOccurence(String y, ArrayList < String > t) {
int count = 0;
for (int i = 0; i < t.size(); i++) {
if (y.equalsIgnoreCase(t.get(i))) {
count++;
}
}
return count;
}
}
或者,如果您想重用该值,只需将其保存在变量中,如sneh所建议
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.