Java ArrayList of ArrayList,如何使用内部列表?
我有一个ArrayList对象,我想动态地向其中添加ArrayList 但是,由于编译器在运行添加外部ArrayList的循环之前不知道哪些对象将位于外部ArrayList中,因此我不能像通常那样使用内部ArrayList 我的代码看起来有点像这样:Java ArrayList of ArrayList,如何使用内部列表?,java,list,dynamic,arraylist,Java,List,Dynamic,Arraylist,我有一个ArrayList对象,我想动态地向其中添加ArrayList 但是,由于编译器在运行添加外部ArrayList的循环之前不知道哪些对象将位于外部ArrayList中,因此我不能像通常那样使用内部ArrayList 我的代码看起来有点像这样: ArrayList list = new ArrayList(); for(int i=8;i>0;i--) { list.add(i, new ArrayList()); } for(int i=8;i>0;i-
ArrayList list = new ArrayList();
for(int i=8;i>0;i--)
{
list.add(i, new ArrayList());
}
for(int i=8;i>0;i--)
{
tileRows.get(i).add( //add other stuff );
}
如何告诉编译器列表中的项将是ArrayList
类型
请记住,我对Java是完全陌生的。如果这是一个愚蠢的问题,我道歉 你可以声明一个列表
,而无论什么
都可以是另一个支持泛型的接口/类,比如列表
,所以把所有这些放在一起,你可以声明一个列表
,编译器会很高兴的。根据上述代码:
List<List<String>> tileRows= new ArrayList<List<String>>();
for(int i=8;i>0;i--) {
list.add(i, new ArrayList<String>());
}
for(int i=8;i>0;i--) {
//here the compiler knows tileRows.get(i) is a List<String>
tileRows.get(i).add("foo");
//uncomment the below line and you will get a compiler error
//tileRows.get(i).add(new Object());
}
List tileRows=new ArrayList();
对于(int i=8;i>0;i--){
添加(i,newarraylist());
}
对于(int i=8;i>0;i--){
//在这里,编译器知道tileRows.get(i)是一个列表
tileRows.get(i).add(“foo”);
//取消注释下面的行,您将得到一个编译器错误
//tileRows.get(i).add(newobject());
}
请记住始终。您可以声明一个列表
,而无论什么
都可以是另一个支持泛型的接口/类,如列表
,因此将所有这些放在一起,您可以声明一个列表
,编译器会很高兴。根据上述代码:
List<List<String>> tileRows= new ArrayList<List<String>>();
for(int i=8;i>0;i--) {
list.add(i, new ArrayList<String>());
}
for(int i=8;i>0;i--) {
//here the compiler knows tileRows.get(i) is a List<String>
tileRows.get(i).add("foo");
//uncomment the below line and you will get a compiler error
//tileRows.get(i).add(new Object());
}
List tileRows=new ArrayList();
对于(int i=8;i>0;i--){
添加(i,newarraylist());
}
对于(int i=8;i>0;i--){
//在这里,编译器知道tileRows.get(i)是一个列表
tileRows.get(i).add(“foo”);
//取消注释下面的行,您将得到一个编译器错误
//tileRows.get(i).add(newobject());
}
请记住始终使用。List List=new ArrayList();
List List=new ArrayList();
List List=new ArrayList();
在Java 7中List List=new ArrayList();
在Java 7中,您可以使用与处理任何其他类型对象相同的方法来执行此操作。你投的是:
((ArrayList)tileRows.get(i)).add( //add other stuff );
或者更好的是,您使用泛型,这样您就不必执行该转换:
//this tells the compiler that your ArrayList will contain ArrayLists
ArrayList<ArrayList<Whatever>> list = new ArrayList()<>;
//now the compiler knows the get() function returns an ArrayList, so you don't have to cast it
tileRows.get(i).add( //add other stuff );
//这告诉编译器您的ArrayList将包含ArrayList
ArrayList=新建ArrayList();
//现在编译器知道get()函数返回ArrayList,因此不必强制转换它
tileRows.get(i).add(//添加其他内容);
您可以像处理任何其他类型的对象一样进行操作。你投的是:
((ArrayList)tileRows.get(i)).add( //add other stuff );
或者更好的是,您使用泛型,这样您就不必执行该转换:
//this tells the compiler that your ArrayList will contain ArrayLists
ArrayList<ArrayList<Whatever>> list = new ArrayList()<>;
//now the compiler knows the get() function returns an ArrayList, so you don't have to cast it
tileRows.get(i).add( //add other stuff );
//这告诉编译器您的ArrayList将包含ArrayList
ArrayList=新建ArrayList();
//现在编译器知道get()函数返回ArrayList,因此不必强制转换它
tileRows.get(i).add(//添加其他内容);
这是Java通用语言,正确的用法如下:
ArrayList<ArrayList> list = new ArrayList<ArrayList>();
for(int i=8;i>0;i--)
{
list.add(i, new ArrayList());
}
for(int i=8;i>0;i--)
{
tileRows.get(i).add( //add other stuff );
}
ArrayList list=new ArrayList();
对于(int i=8;i>0;i--)
{
添加(i,newarraylist());
}
对于(int i=8;i>0;i--)
{
tileRows.get(i).add(//添加其他内容);
}
这是Java通用语言,正确的用法如下:
ArrayList<ArrayList> list = new ArrayList<ArrayList>();
for(int i=8;i>0;i--)
{
list.add(i, new ArrayList());
}
for(int i=8;i>0;i--)
{
tileRows.get(i).add( //add other stuff );
}
ArrayList list=new ArrayList();
对于(int i=8;i>0;i--)
{
添加(i,newarraylist());
}
对于(int i=8;i>0;i--)
{
tileRows.get(i).add(//添加其他内容);
}
谢谢,这正是我想要的。我怀疑事情会像这样简单。谢谢你,这正是我想要的。我怀疑会是这样简单的事情。