Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在ArrayList(java)中创建ArrayList吗?_Java_Arrays_Arraylist_Collections - Fatal编程技术网

我可以在ArrayList(java)中创建ArrayList吗?

我可以在ArrayList(java)中创建ArrayList吗?,java,arrays,arraylist,collections,Java,Arrays,Arraylist,Collections,我希望将用户输入存储到ArrayList中,然后将该ArrayList放置到另一个ArrayList中。所以有点像主类别,它包含包含数据的子类别 下面是一些代码: ArrayList<String> mainCat = new ArrayList<>(); ArrayList<String> subCat = new ArrayList<>(); ArrayList mainCat=new ArrayList(); ArrayLi

我希望将用户输入存储到ArrayList中,然后将该ArrayList放置到另一个ArrayList中。所以有点像主类别,它包含包含数据的子类别

下面是一些代码:

    ArrayList<String> mainCat = new ArrayList<>();
    ArrayList<String> subCat = new ArrayList<>();
ArrayList mainCat=new ArrayList();
ArrayList subCat=新的ArrayList();

我可以在“mainCat”数组列表中添加“subCat”数组列表吗?

为什么不可以?但您需要对mainCat的定义做一点小小的更改:

List<List<String>> mainCat = new ArrayList<List<String>>();
List mainCat=new ArrayList();
因为mainCat集合中的项目不是字符串而是集合。

当然可以

List<List<String>> mainCat = new ArrayList<ArrayList<String>>();
List<String> subCat = new ArrayList<String>();

mainCat.add(subCat);
List mainCat=new ArrayList();
List subCat=new ArrayList();
主目录添加(子目录);

当然!添加它就像添加任何其他
ArrayList
,除了类型是
ArrayList

ArrayList mainCat=new ArrayList();
ArrayList subCat=新的ArrayList();
主目录添加(子目录);

为此,我将使用
映射
,因为它使基于主类别查找子类别变得更容易。如果使用
列表
,实际上无法确定给定子类别属于哪个主类别。下面是一个使用
TreeMap
的示例(它会自动按字母顺序保留主要类别):

Map main categories=new TreeMap();
主要类别.put(“A”)、数组.asList(“A1”、“A2”、“A3”);
主要类别.put(“B”、数组.asList(“B1”、“B2”);
主要类别.put(“C”,数组.asList(“C1”);
系统输出打印项次(主要类别);
System.out.println(mainCategories.get(“B”));
这是打印出来的

{A=[A1, A2, A3], B=[B1, B2], C=[C1]} [B1, B2] {A=[A1,A2,A3],B=[B1,B2],C=[C1]} [B1,B2]
是否希望数据结构反映主类别->子类别层次结构?也许一个
地图
(将主要类别映射到子类别列表)会是一个更好的选择。我同意麦克的观点,在这种情况下,地图可能是一个更好的选择。@Mick助记符为什么地图?由于冲突问题,并更快地找到任何arraylist类型字符串?@MickMnemonic我试图避免使用Map或HashMaps。但我想这只是我的懒惰。@KickButtowski,不,因为地图是构建层次(树状)模型的理想选择,就像OP的例子所代表的那样。你的列表应该有一个类型,你认为呢?感觉很粗糙?@KickButtowski你在说什么?他的第一个列表使用
list
作为类型参数,第二个列表使用
String
。两者都有类型参数specified@VinceEmigh他回答道:如果你能加上好的解释,我很乐意投你一票
Map<String, List<String>> mainCategories = new TreeMap<>();
mainCategories.put("A", Arrays.asList("A1", "A2", "A3"));
mainCategories.put("B", Arrays.asList("B1", "B2"));
mainCategories.put("C", Arrays.asList("C1"));

System.out.println(mainCategories);
System.out.println(mainCategories.get("B"));
{A=[A1, A2, A3], B=[B1, B2], C=[C1]} [B1, B2]