关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
27天前关门了。
改进这个问题
我有三个不同的数组列表:
ArrayList<type1> alista = new ArrayList<>();
ArrayList<type2> blistb = new ArrayList<>();
ArrayList<type3> clistc = new ArrayList<>();
然后我创建一个新的数组列表并将这3个数组列表放入其中:
ArrayList<Object> all_lists = new ArrayList<Object>();
all_lists.add(alista);
all_lists.add(blistb);
all_lists.add(clistc);
如何添加或删除所有列表中的对象:alista、blistb和clistc?我想在main()中的方法之间来回传递所有的\u列表。我知道这样做可能是错误的,但我想在我把它做得更好之前让它工作。
例如,如何从blistb中取出,然后添加一个我创建的type2类型,然后删除一个type2(从blistb中)。然后把它放回(或者创建新的所有列表?)?
4条答案
按热度按时间luaexgnf1#
您只需跟踪哪个数组是哪个:在:
all_lists.get(1).remove(2);
vktxenjb2#
all_lists
应声明为ArrayList<ArrayList>
(使用原始类型,需要@SuppressWarnings("unchecked")
).然而,创建一个 Package 类而不是
all_list
:xj3cbfub3#
你应该申报
all_lists
作为一个List
的List
s;然后,您可以直接向List
在特定的索引处。eqzww0vc4#
如果我理解正确,您希望能够传递所有数据并对列表进行更改。首先,我要将列表的类型更改为list接口。这不会影响代码的功能,但如果您希望在将来更改列表实现,它会更容易,并且还可以保存一些字符:
我们将对所有\u列表执行相同的操作,同时将其泛型类型更改为list,以使以后的工作更轻松:
(如果type1、type2和type3有一些共同的祖先,它们都是从这些祖先扩展而来的,请将上面的对象更改为该类型。)
要获取一个列表,例如blistb,您需要知道它在所有列表中的位置:
这可能很难维护和跟踪。还有一种风险是,将来的一些代码会改变顺序,这将导致错误和麻烦。
处理列表的更好方法是将它们 Package 在数据对象中:
现在,您可以从alllists对象轻松获取列表,并根据需要修改它们。
您不需要“把列表放回去”,因为java是通过引用传递的。当您从alllists获取blistb时,您将获得对同一list对象的引用。对引用的任何更改都是对原始列表的更改。
我改变了类型和变量名,使之更加标准化。