java能不能这样?List<Map<String, Object>>[]

java数组和集合能不能共同存在?打个比方:new一个数组的时候是inta[]=newint[5];那我可不可以new一个数组里面的每一个元素都是一个List<map<>... java数组和集合能不能共同存在?打个比方: new一个数组的时候是 int a[] = new int[5]; 那我可不可以new一个数组里面的每一个元素都是一个List<map<>>? 展开
 我来答
Notify0033
推荐于2018-03-26 · TA获得超过413个赞
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:56万
展开全部
可以的 ,直接给实例:
public static void main(String[] args) {
List<Map<String, String>>[] lists = new ArrayList[4];
Map<String, String> map = new HashMap<String, String>();
map.put("a", "1");
map.put("b", "2");
List<Map<String, String>> list = new ArrayList<Map<String,String>>();
list.add(map);
lists[0] = list;
System.out.println(lists[0]);

System.out.println("***********无敌分割线************");

Map<String, String> map2 = new HashMap<String, String>();
map2.put("c", "1");
map2.put("d", "2");
List<Map<String, String>> list2 = new ArrayList<Map<String,String>>();
list2.add(map2);
lists[1] = list2;
System.out.println(lists[1]);
}

运行结果:
[{b=2, a=1}]
***********无敌分割线************
[{d=2, c=1}]
帐号已注销
2015-09-08 · 超过15用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:31.2万
展开全部

这个是不行的吧,比如

List<Map<String, Object>>[] l = new ArrayList<Map<String, Object>>[5];

会编译出错,提示:Cannot create a generic array of ArrayList<Map<String,Object>>

我想原因大概是这样的,ArrayList底层是数组实现的,可以把它理解为可变长度的数组,你的需求就可以理解为一个二维数组,即new ArrayList<Map<String, Object>>[len][5],因为是List集合所以len的长度不确定,这样就不符合java中二维数组的定义规范了,二维数组第二个长度可以事先不声明,但是第一个必须声明.

以上都是我个人的推理,不一定正确,望采纳

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heart的记忆
2015-09-08 · 超过26用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:35.1万
展开全部
可以
//新建一个对象数组
Object[] a = new Object[2];
//新建一个list集合
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//新建一个map对象
Map<String, Object> map = new HashMap<String, Object>();
//往map里赋值
map.put("1", 1);
map.put("2", 2);
map.put("3", 3);
//将map装在list里
list.add(map);
//将list放在数组里
a[0] = list;
a[1] = list;

//循环打印数组
for(int i=0;i<a.length;i++){
List<Map<String, Object>> list2 = (List<Map<String, Object>>) a[i];
System.out.println(list2.get(0).get("1"));
System.out.println(list2.get(0).get("2"));
System.out.println(list2.get(0).get("3"));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
施弘阔0dp
2015-09-08 · TA获得超过289个赞
知道小有建树答主
回答量:519
采纳率:0%
帮助的人:315万
展开全部
可以啊。就算你是Map<String,List<Map<String,Map<String,List<Object>>>>>也是没问题的
追问
List> Lists[] = new ArrayList()[5];  为什么这样报错?该怎么NEW?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小童鞋_成er
2015-09-08 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
可以的,List<T> 这个T其实就是Object类型。
更多追问追答
追问
List> Lists[] = new ArrayList()[5];  为什么这样报错?该怎么NEW?
追答
List> Lists[] = new ArrayList>();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式