[英]In Java is there a way to name an ArrayList inside the ArrayList?
當我需要一種輕松識別ArrayList中的ArrayList的方法時,我只需將標識符放在0索引中,然后用循環打印出所有零索引。 現在,我想知道是否有辦法使嵌套的ArrayList具有名稱。
例如:
ListOfLists.add( new ArrayList<String>() );
ListOfLists.get(ListOfLists.size() -1).add("someIdentifierHumansCanRead");
有什么辦法可以使ListOfLists.add(new ArrayList<String>())
成為ListOfLists.add(ArrayList someIdentifierHumansCanRead = new ArrayList<String>)
嗎?
還是這完全是荒謬的?
您所說的map是所有數組列表都由字符串作為鍵的映射-但是您將失去迭代順序。 或者,您可以將鍵存儲在數組列表中,而可以將鍵存儲在映射中。
實現您自己的ArrayList
類並為其定義一個標識符屬性:
class NamedList<T> extends ArrayList
{
private String name;
public NamedList(String name) {
this.name = name;
}
// Getters/Setters and other stuff for identifier, etc.
}
ArrayList<NamedList<String>> superList = new ArrayList<NamedList<String>>();
superList.add(new NamedList<String>("babangida"));
如果您需要“命名” ArrayList,那么您真的想創建一個有意義的數據結構而不是使用hack。 畢竟,這是OO編程:
public void MyNamedBean {
private String name;
private final List<String> list = new ArrayList<String>();
public MyNamedBean(String name) {
this.name = name;
}
public String getName() {
return name;
}
// If you don't need to change the name, make the field
// final and remove this method.
public void setName(String name) {
this.name = name;
}
// It should have a more meaningful name.
public List<String> getList() {
return list;
}
}
根據我對另一個答案的評論進行更新:這是一個OO設計問題。 如果它是一個帶有名稱的列表,則不僅僅是一個列表,這意味着您不應該直接擴展List實現,而應該創建一個有意義的類。 如果您有時需要第二個列表或另一個“名稱”(例如,人類可讀的標簽)怎么辦? 您可以閱讀有關何時使用繼承和何時使用合成的Liskov替換原理 。 另請參見優先於繼承而不是繼承 。
如果您的意思是引用,則無法嘗試此操作
ArrayList someIdentifierHumansCanRead = new ArrayList<String>();
ListOfLists.add(someIdentifierHumansCanRead)
或者Map<String,List<String>>
如果要使用標識符檢索Map<String,List<String>>
可以使用Map<String,List<String>>
。
map.put("id",new ArrayList<String>());
該映射可以是HashMap / LinkedHashMap / TreeMap等。迭代順序將取決於所選的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.