如果我理解正确,您希望能够传递所有数据并对列表进行更改。首先,我会将您的列表类型更改为 List 界面。这不是您的代码的功能,但如果您想在将来更改 List 实现,它会更容易,并且它还可以节省一些字符:
List<Type1> alista = new ArrayList<>();
List<Type2> blistb = new ArrayList<>();
List<Type3> clistc = new ArrayList<>();
我们将对 all_lists 做同样的事情,同时将其泛型类型更改为 List 以便以后更轻松:
List<List<Object>> allLists = new ArrayList<Object>();
(如果 Type1、Type2 和 Type3 有一些共同的祖先,它们都是从它们扩展而来的,则将上面的 Object 更改为该类型。)
要获取您的列表之一,例如 blistb,您需要知道它在 all_lists 中的位置:
List<Type2> blistbReference = allLists.get(1); // Index starts from 0
这可能很难维护和跟踪。还有一种风险是未来的一些代码更改会改变顺序,这会导致错误和令人头疼的问题。
处理列表的更好方法是将它们包装在数据对象中:
public class AllLists {
private List<Type1> alista;
private List<Type2> blistb;
private List<Type3> clistc;
public AllLists(List<Type1> alista, List<Type2> blistb, List<Type3> clistc) {
this.alista = alista;
this.blistb = blistb;
this.clistc = clistc;
}
public List<Type1> getAlista() {
return alista;
}
public List<Type1> getBlistb() {
return blistb;
}
public List<Type1> getClistc() {
return clistc;
}
}
// ......
AllLists allLists = new AllLists(alista, blistb, clistc);
您现在可以轻松地从 AllLists 对象中获取您的列表并随意修改它们。
Type2 t = new Type2;
allLists.getBlistb().add(t);
您不需要“放回列表”,因为 Java 是通过引用传递的。当您从 allLists 中获取 blistb 时,您将获得对同一列表对象的引用。对引用的任何更改都是对原始列表的更改。
我将类型和变量名更改为更加标准化。