java - 返回数组中以传递的初始值开头的字符串
问题描述
我有一个 .txt 文件,其中包含以下状态的数据:
AL,Alab,4860
AK,Alas,7415
AZ,Ariz,6908
AR,Arka,2988
我制作了一个函数,它计算有多少状态以初始传递的状态开始:
public int CInitial(char initial) {
int total = 0;
for(int i = 0; i < states.length; i++) { //states is an array which includes all states present in the .txt file
String testString = states[i].getName(); // getName gets the name of the states present in the .txt file
char[] stringToCharArray = testString.toCharArray();
for (char output : stringToCharArray) {
if(initial == output) {
total++;
}
}
}
return total;
}
如果传递了“A”,这将返回数字 4,如果传递了任何其他首字母,则返回数字 0,因为有 4 个以字母“A”开头的状态。
现在如何创建一个新函数来传递一个字符并返回以该字符开头的所有状态的名称?例如,这是为此所需的初始返回类型,但是我在启动它时遇到了麻烦。该过程是否与我创建的countStatesCountByInitial函数相同?
public State[] CByInitial(char initial) {
return new State[] {}; //to be completed
}
解决方案
是的,它将与countStatesCountByInitial
. 主要区别在于每次找到匹配项时,都希望将状态添加到数组中。由于我们事先不知道数组的大小,我们可能想使用 aList
来代替。
public State[] getStatesCountByInitial(char initial) {
ArrayList<State> found = new ArrayList<>();
// this is the same as before
for(int i = 0; i < states.length; i++) {
String testString = states[i].getName();
char[] stringToCharArray = testString.toCharArray();
for (char output : stringToCharArray) {
if(initial == output) {
// except here when you find a match, you add it into the list
found.add(states[i]);
}
}
}
// return as array
return found.toArray(new State[found.size()]);
}
正如 Patrick 所建议的,我们可以避免使用List
by usingcountStatesCountByInitial
来初始化状态的大小。
public State[] getStatesCountByInitial(char initial) {
int matchSize = countStatesCountByInitial(initial);
States[] found = new States[matchSize];
int foundIndex = 0;
// this is the same as before
for(int i = 0; i < states.length; i++) {
String testString = states[i].getName();
char[] stringToCharArray = testString.toCharArray();
for (char output : stringToCharArray) {
if(initial == output) {
// except here when you find a match, you add it into the array
found[foundIndex] = states[i];
foundIndex++;
}
}
}
// return the array
return found;
}
推荐阅读
- ios - iOS 15 核心数据与 CloudKit 公共数据库同步导致“自定义区域”不允许错误
- python - 使用python进行替换采样
- reactjs - 更改格式 html/css 以做出反应,但布局无法正常工作
- gradle - 如何创建一个调用许多其他 gradle 任务的 gradle 任务,包括使用不同的参数多次调用同一个任务
- reactjs - 查询不再有模拟响应:突变
- r - 在批处理 Rscript 中使用 R 密钥环库会产生“密钥不是字符串(长度为 1 个字符)”错误
- css - 在 Bootstrap 5 卡片标题中获取文本右对齐
- android - GitHub Gist API 限制
- php - 根据数据库可用性显示方面
- qt - 在 QML 中模糊背景