2 * string named list map
4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sourceforge.mikutoga.vmd.model;
10 import java.util.Collections;
11 import java.util.HashMap;
12 import java.util.LinkedList;
13 import java.util.List;
21 public class NamedListMap<E> {
23 private final List<String> nameList;
24 private final Map<String, List<E>> listMap;
30 public NamedListMap(){
32 this.nameList = new LinkedList<String>();
33 this.listMap = new HashMap<String, List<E>>();
42 this.nameList.clear();
51 public boolean isEmpty(){
52 if(this.listMap.isEmpty()) return true;
59 * <p>ここで返されるListへの修正操作は不可能。
62 public List<String> getNames(){
63 List<String> result = Collections.unmodifiableList(this.nameList);
70 * @return 名前付けされたリスト。リストが存在しなければnull。
72 public List<E> getNamedList(String name){
73 List<E> result = this.listMap.get(name);
79 * 存在しない名前が渡された場合、何もしない。
82 public void removeNamedList(String name){
83 if(this.listMap.remove(name) == null) return;
84 this.nameList.remove(name);
89 * 名前付けされたリストに新要素を追加する。
90 * 未登録の名前であれば新たにリストが作成される。
93 * @throws NullPointerException 引数がnull
95 public void addNamedElement(String name, E elem)
96 throws NullPointerException{
97 if(name == null || elem == null) throw new NullPointerException();
99 List<E> list = this.listMap.get(name);
101 list = new LinkedList<E>();
102 this.listMap.put(name, list);
103 this.nameList.add(name);