首页 > 解决方案 > 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)
    }
}

甚至是可能的。我想避免每次添加另一个属性时都必须硬编码。

复选框值由等于不同但关联类的标签填充。

标签: javacontains

解决方案


在这里,您可以在结果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));

推荐阅读