あなたが達成したいことについてのBenoitの考えに基づいて、最善の方法はMap(またはスレッドセーフが必要な場合はConcurrentMap)を使用することだと思います:
ConcurrentMap<String, List<String>> myData = new ConcurrentHashMap<>();
このようにして、指定した ID で任意のリストをアドレス指定できます。
List<String> myList = myData.get(id);
リストのアクセサを制限したい場合 (たとえば add メソッドのみを提供する場合)、リストをクラスにカプセル化する必要があります。
public final class Example {
private final List<String> docs = new ArrayList<>();
public boolean addDoc(final String doc) {
return docs.add(doc);
}
}
次に、次のようにマップを使用します。
ConcurrentMap<String, Example> myData = new ConcurrentHashMap<>();
そして、そのようなドキュメントを追加します:
myData.get(id).addDoc(myDoc);
お役に立てれば...
コメントで議論されたトピックについて:変数の設定
あなたはこのようなクラスを持っています:
public class Example {
public String var;
}
そして、このようなインスタンス
Example ex = new Example();
で値を設定できます
ex.var = "abc";
こんなカルスで
public class Example {
private String var;
public void setVar(String var) {
this.var = var;
}
}
使用する
ex.setVar("abc");
複数のインスタンスの管理:
1)WebサービスはIDで情報を取得します
2) サーバー アプリケーションはインスタンスのマップを保存し、ID を介してアクセスできます (上記のマップの例を参照)。あなたが呼び出すWebサービスで
Example ex = ReportHolder.getReport(id);
このようなクラスを仮定します:
public class ReportHolder {
private static ConcurrentMap<String, Example> map = new ConcurrentMap<>();
public static Example getReport(final String id) {
return map.get(id);
}
}
3) 次に、インスタンスを操作できます。
変数、クラス、インスタンス、および静的という用語を正しく理解してください。そうしないと、エラーが発生した理由を理解するのが難しくなります。