[英]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.