2017-03-01 3 views
0

このようなJavaコードを使用するのは比較的不慣れです。私のSeleniumオートメーションで前進するために、Map>を繰り返していきたいと思います。リスト内を反復する地図内の値

は今、私は次のコードでその反復の近くに取得しよう:

static Map<String, List<WebElement>> map = new Map<String, List<WebElement>>; 

for (Map.Entry<String, List<WebElement>> entry : map.entrySet()) { 
    for (int i = 0; i < entry.getValue().size(); i++) { 
     *need to find code* 
    } 
} 

私の意図は

ウィルマップ内で1つのキーの値内のすべてのWebElementsを反復処理することです」 entry.getValue()。size() "この場合のリストのサイズを取得しますか?そのような場合、どのようにしてリストから特定のアイテムを取り出せますか?もっと良い解決策は?

敬具

答えて

0

あなたは、各マップエントリから、キーと値の両方にアクセスし、必要なものは何でも行うことができます。この場合のキーは文字列で、その値はList<WebElement>です。リストを手元に置くと、そのサイズにアクセスしてそれを反復することができます。

for (Map.Entry<String, List<WebElement>> entry : map.entrySet()) { 
    String key = entry.getKey(); 
    List<WebElement> list = entry.getValue(); 

    // to iterate over the list, you can try 
    for (int i=0; i < list.size(); ++i) { 
     WebElement we = list.get(i); 
     // do something with this web element 
    } 
} 
+0

OPはJavaにとって初めてのものなので、コードを説明すると便利かもしれないと思います。 – Mistalis

+0

@Mistalis説明が追加されました。 –

+0

@TimBiegeleisen:どうもありがとうございました。 :)それは仕事をするかもしれない! :) – useR210961

0

私の意図は十分に簡単であるべきマップ

内の1つのキーの値内のすべてのWebElementsを反復処理することです:

for(WebElement element : map.get(key)) { 
    //do whatever is appropriate 
} 

の一つの問題があります上記の場合:get(key)nullを返した場合(キーがマップされていないか、マップの値がnullの場合そのキーのために)あなたはNullPointerExceptionを得る。あなたがnullを取得していないかどうかを確認し、最初のマップを得ることができることを修正するには、その後、反復:

List<WebElement> list = map.get(key); 
if(list != null) { 
    for(WebElement element : list) { 
    //do whatever is appropriate 
    } 
} 

あなたはまた、常にget()に収集/リストを返しますグアバのListMultimap、見を持っている場合がありますリスト値を持つマップを扱いやすくします。

「entry.getValue()。size()」は、その場合のリストのサイズを取得しますか?

はい、あなたが与えられたキーのためnullをマッピングされない限り、entry.getValue()Listを返す必要があるため。 Listを取得したので、size()を呼び出すとリストのサイズが返されます。

このような場合、どのように特定のアイテムをリストから取り出せますか?

あなたはその要素のインデックスを知っている場合は、単にindex >= 0 && index < list.size()かどうか、すなわち、リストが実際にそのインデックスが含まれているかどうか確認してください。それからちょうどそれをlist.get(index)で入手してください。

インデックスがわからない場合は、リストを反復処理し、最後に到達するか必要な要素が見つかるまで各要素を調べる必要があります。また、チェックしているプロパティでリストをソートできる場合は、バイナリ検索を使用して要素が存在する場合はその要素を見つけることもできます。

LinkedListget(index)の線形コストを持っているため、少なくともリストに多数の要素が含まれている場合は索引やバイナリ検索では適していません。

+0

その説明をありがとうございました。特にnullpointerexceptionに関して。私はそれを考慮に入れます! :) – useR210961

関連する問題