java - 各种类类型的 ArrayLists - 查找数组中键值位置的通用方法
问题描述
我有一个带有多个下拉列表的多个输入表单的 Android 应用程序。对于这些表单,用户可以在提交记录之前多次进入和退出记录。因此,如果他们在下拉列表中选择了某些内容,退出记录,然后再次进入 - 他们希望看到他们的最后一个条目已经在下拉列表中预先选择。
以下是驱动下拉列表的众多类类型之一的示例:
public class SART implements Serializable
{
private String Code;
private String Description;
public String getCode() {return Code;}
public void setCode(String Code) {this.Code = Code;}
public String getDescription() {return Description;}
public void setDescription(String Description) {this.Description = Description;}
}
所以我取一个已知值并在驱动下拉列表的数组列表中查找它的位置,然后在下拉列表中选择这一行。这是我如何做的一个例子:
int FindApplicationMethodPosition(ArrayList<SART> applicationMethods,String strExistingId)
{
int intSARTPosition = -1;
if (strExistingId !=null)
{
for(int i = 0; i <applicationMethods.size(); i++){
if(applicationMethods.get(i).getCode().equals(strExistingId))
{
intSARTPosition = i;
break;
}
}
}
return intSARTPosition;
}
我的代码中有大约 30 个不同的版本,我想尝试只调用一个通用版本。
int FindPositionGeneric(Object array, String strExistingId)
{
int intRC = -1;
intRC = IntStream.range(0, array.size())
.filter(i -> array.get(i).getCode().equals(strExistingId))
.findFirst()
.orElse(-1);
return intRC;
}
但当然编译器根本不喜欢这样。请问有什么建议吗?
解决方案
如果类的所有 30 个版本都相同getCode()
,则创建一个接口(让它成为MyInterface
),并让所有类实现这个接口。然后更新方法如下:
int FindPositionGeneric(List<MyInterface> list, String strExistingId)
{
int intRC = IntStream.range(0, list.size())
.filter(i -> list.get(i).getCode().equals(strExistingId))
.findFirst()
.orElse(-1);
return intRC;
}
此外,由于您拥有orElse
,因此无需intRC
单独初始化。
推荐阅读
- python - Plotly - 将多个子图与下拉菜单按钮相结合
- caching - AWS AppSync 解析程序缓存
- python - 如何区分数据类型“String、int、float ..等
- python - How to correlate different MRI sequences images in NIFTI format?
- javascript - Javascript Audio Html
- google-cloud-ai-platform-pipelines - Minimal permissions to submit a kubeflow pipeline
- python - Noticing a warning to limit scraped results with BeautifulSoup in Python
- javascript - Is it possible to set a cookie to expiry at the end of session and after 1 day?
- security - 如何在 Airflow 2.0 中设置 LDAP 身份验证
- sql-server - SQL Server 跨数据库复制数据