Commons Collectionsの本命の一つとも思われるのがこのBidiMap(Bidirectional Map)だろう.
キーのみならずバリューでも検索できるのでこれは優れものである.
以下のコードの例はキーで検索して要素を削除,そしてバリューで検索して要素を削除する例を示している.
@Test
public void testBidiMap() {
BidiMap bidiMap = new TreeBidiMap( initMap() );
assertThat( (String)bidiMap.remove( 4 ), is( "London" ) );
assertThat( ((Integer)bidiMap.removeValue( "NewYork" )).intValue(), is( 1 ) );
assertThat( bidiMap.size(), is( 3 ) );
}
private Map<Integer,String> initMap() {
Map<Integer,String> m = new HashMap<Integer,String>();
m.put( 1, "NewYork" );
m.put( 2, "Tokyo" );
m.put( 3, "Bangalore" );
m.put( 4, "London" );
m.put( 5, "Paris" );
return m;
}
バッグ - データストレージ
オブジェクトのストレージとして使えるバッグ - 使えるのか?
とりあえずサンプルコードを作ってみた.
@Test
public void testBag() {
Bag bag = new HashBag();
bag.add( 4, 6 );
bag.remove( 4, 3 );
assertThat( bag.getCount( 4 ), is( 3 ) );
Iterator iter = bag.iterator();
while( iter.hasNext() ) {
System.out.println( System.identityHashCode( iter.next() ) );
}
}
0 件のコメント:
コメントを投稿