2016-11-30 1 views
0

String値を持つjava.util.Mapオブジェクトがあります。 java.util.MapのString値の1つをmyString値と比較する必要があります。以下は、問題をよりよく理解するための値を持つ変数です。droolのString要素のリストとして扱う2つの文字列を比較する必要があります

myMap[STATE.code]="AK","MI","GA","NY","OH","CA" 

myString="MI","OH" 

注:( "AK"、 "MI"、 "GA"、 "NY"、 "OH"、 "CA")および( "MI"、 "OH")は、完全な文字列値とではありませんコンマ区切りの値。

「MI」、「MI」、「GA」、「NY」、「OH」、「CA」に「MI」または「OH」のいずれかが存在するかどうかを確認する必要があります。 したがって、myStringとmyMAp [STATE.code]の値を 'list of elements'として扱い、両方を比較しようとしています。私はリストに共通の要素があるかどうかを知るためにCollections.disjoint関数を試しました。 DSLで

[condition][]Putting codes into variable=$code : String(this == myMap[STATE.code]) 

[condition][]Codes exist in list {myString}= Boolean(java.util.Collections.disjoint(java.util.Arrays.asList($code) , java.util.Arrays.asList({myString})) == false) 

[condition][]Codes doesn't exist in list {myString}= not(Boolean (java.util.Collections.disjoint(java.util.Arrays.asList($clientCatCode) , java.util.Arrays.asList({myString})) == false)) 

DSLが正常にコンパイルがなく、何もそれから出てくるの決定とも任意の例外やエラーはありません。このアプローチが正しいとは思われません。誰でも私に何かアプローチを提案したり、DSLを修正するのに役立つことができます。

+0

2つまたは3つの要素と1つまたは2つの "my" Stringオブジェクトを持つ "my" Mapオブジェクトを持つ場所に、コンパイル可能で実行可能なJavaコードを記述して投稿することをお勧めします。次に、マップが文字列と組み合わされたときに真または偽を示す(Java)コードに同意することができます。これで、Droolsについて議論することができます。最後に、賢明なDSLについて話すことができます。 – laune

答えて

0

状態コードは、マップ内のキーの場合は与えられた文字列がmap.containsValue(String)をチェックすることにより、地図に存在しているかいないならば、我々は確認することができ、

それは地図値だならば、我々はそれを経由することができます取得map.containsKey(String);

+0

STATE.codeは、値( "AK"、 "MI"、 "GA"、 "NY"、 "OH"、 "CA")を保持するマップ(ある定数)のキーです。 –

+0

map.containsValue()を使用してmyStringを比較すると、結果は常にfalseになります。 myStringは( "MI"、 "OH")であるため、これは部分的にmapの値と一致します。また、myStringは、マップ値のシーケンスと一致していてもいなくてもよいランダムなコードシーケンスを持つことができます。 –

+0

myStringは配列なので、両方の配列をオブジェクトとして比較しているときにマップ値が取得されますか?私はその質問にはっきりしていない –

関連する問題