2014-02-19 42 views
0

我有以下负载实施。4键值HashMap?阵列?最佳方法?

validateParameter(field_name, field_type, field_validationMessage, visibleBoolean); 

代替一排具有的这些50-60的,有某种形式的嵌套散列映射/四维阵列的余可以用于构建它,并循环通过它们?

做这样的事情最好的方法是什么?

谢谢!

编辑:有4个项目。

+1

你究竟在努力实现什么?你需要每次使用不同的变量组合调用相同的方法? –

+0

@TimB Yea - 每次使用4个不同参数调用ValidateParameter方法约50次。 –

+0

这取决于这些都来自哪里。如果你有50-60的任何事情,那么他们应该已经在数组或其他数据结构中。 – Radiodef

回答

1

你可以做的是创建一个新的Class,它拥有三个值。 (类型,boolean和名称,或第四个值(您没有列出))。然后,在创建HashMap时,您只需拨打method即可获得三个值。这可能看起来像更多的工作,但所有你需要做的是创建一个简单的loop来通过你需要的所有值。既然我不知道你在做什么,我所能做的就是提供一个我想要做的事情的例子。希望它适用于你的问题。

无论如何,创建Class来保存你需要的三个(或四个)值。

例如,

Class Fields{ 
    String field_name; 
    Integer field_type; 
    Boolean validationMessageVisible; 

    Fields(String name, Integer type, Boolean mv) { 
    // this.field_name = name; 
    this.field_type = type; 
    this.validationMessageVisible = mv; 
} 

然后把它们放在一个HashMap有点像这样:

 HashMap map = new HashMap<String, Triple>(); 
    map.put(LOCAL STRING FOR NAME OF FIELD, new Field(new Integer(YOUR INTEGER),new Boolean(YOUR BOOLEAN))); 

注意:这只会只要这三个或四个值都可以工作一起存放。例如,如果您需要将所有值分开存储,无论出于何种原因,那么这将不起作用。只有在不影响程序功能的情况下才能将它们组合在一起,这才能起作用。

这是一个快速的头脑风暴。不知道它是否会起作用,但按照这些思路思考,我相信它应该为你工作。

您可能需要做一些修改,但是这应该让你在正确的方向

附:对不起,这是如此罗嗦,只是试图尽可能多的细节。

+4

'类字段'是如此错误。 :)) –

+0

@BheshGurung你是什么意思?检查我的编辑。应该修复吗?无论问题是什么? –

+0

由于多种原因,这仍然是不可编译的。目前尚不清楚您的完整建议是什么,或者这对OP有何帮助。 – Radiodef

1

其他答案很接近,但在这种情况下您不需要钥匙。

只需定义一个类来包含您的三个字段。创建该类的List或数组。循环调用每个组合的方法的列表或数组。

1

我使用的方法是创建一个POJO(或一些POJO)来将值存储为属性并通过属性验证属性。

因为很多时候你会对每个属性类型进行相同的验证(例如日期和数字可以通过范围验证,字符串可以验证以确保它们不为空或空等),你可以使用反射迭代这些属性(甚至更好,使用注释)。

如果您需要在POJO级别上进行验证,您仍然可以通过合成来重用这些属性级别的验证器,而添加更多特定的验证则您将在抽象级别上升(上升意味着基本属性 - > pojos - >包含其他pojos的pojos - >等)。

将几个基本类型作为参数传递给同一个方法并不好,因为参数本身并没有多大意义,您可以在方法调用中轻松地交换两个相同类型的参数。