java - Java字符串array.contains(具有相同属性名称的对象)
问题描述
我有一个字符串数组,它从 jsp 中的复选框中获取参数值:
String[] myStringArray = req.getParameterValues("checkboxValues");
目前有一个循环来查看数组中的任何字符串是否与我在类中的属性名称匹配:
public static class Prefs
{
@Getter @Setter private boolean matchingChar;
@Getter @Setter private boolean acqVals;
@Getter @Setter private boolean allTrades;
@Getter @Setter private boolean documents;
}
for(String value : myStringArray)
{
if("Matching Char".contains(value))
{
prefs.setMatchingChar(true);
}
else if("Acq Vals".contains(value))
{
prefs.setAcqVals(true);
}
else if("All Trades".contains(value))
{
prefs.setAllTrades(true);
}
else if("Documents".contains(value))
{
prefs.setDocuments(true);
}
}
我意识到这是非常低效的,并且可能会导致问题。
是否有更简单的方法来检查从复选框返回的值是否与属性名称匹配?
我不确定是否像
for(String value : myStringArray){
if(Prefs.hasAttribute.contains(value){
set(thisAttribute)
}
}
甚至是可能的。我想避免每次添加另一个属性时都必须硬编码。
复选框值由等于不同但关联类的标签填充。
解决方案
在这里,您可以在结果ArrayList上使用contains() 方法,该方法返回一个布尔值,表示列表是否包含我们传递给它的元素。
String[] myStringArray= new String[]{"Matching Char", "Acq Vals", "All Trades", "Documents"};
List<String> myStringList = new ArrayList<>(Arrays.asList(myStringArray));
System.out.println(myStringList.contains(value));
推荐阅读
- nginx - Nginx Tracing 无法进入上游服务
- spring-boot - Spring中的事务性kafka和数据库
- google-pay - Google Pay + Sberbank 集成错误 10
- python - 从任何地方激活 Python venv
- javascript - 如何识别点(xy)在svg组几何元素内
- ios - @import geolocator_apple:找不到模块“geolocator_apple”
- laravel - 向 Laravel web.php 路由发送 POST 请求
- prestashop - 如何处理带有 div 元素的 CLS 分数?(网络生命体征)
- c# - 在 post-request 中设置带有参数的 accept-header
- apache-spark - 如何在 Spark3 中获取 **add_months** Spark2 行为