ArrayLIst和Map

Array和ArrayList的区别?

1、Array可以包含基本类型也可以包含对象类型,ArrayList只能包含对象类型

但是需要注意的是:Array数组在存放的时候一定是同种类型的元素。ArrayList就不一定了,因为ArrayList可以存储Object。

2、Array大小是固定的,ArrayList大小是动态变化的

ArrayList的空间是动态增长的,如果空间不够,它会创建一个空间比原空间大约0.5倍的新数组,然后将所有元素复制到新数组中,接着抛弃旧数组。而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。(比较麻烦的地方)。

3、ArrayList提供了更多的方法和特性。比如:addAll(),removeAll(),iterator()等等。

对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

小tip:

ArrayList不适宜增加、删除,可使用LinkedList

换句话说,ArrayList的实现用的是数组,LinkedList是基于链表,ArrayList适合查找,LinkedList适合增删

ArrayList和Map的使用

//		ArrayList定义
/*
* add(值) 增加
* remove(下标) 删除
* set(下标,值) 修改
* get(下标) 查看
* size() 获取长度
*/
		ArrayList<String> aLists = new ArrayList<String>();
		aLists.add("小明");
		aLists.add("小红");
		aLists.add("张三");
		System.out.println(aLists.size());
		aLists.remove(1);//按照索引删除
		System.out.println(aLists.size());
		aLists.add(0,"张三");
		System.out.println(aLists.get(2));
		aLists.set(1, "小谷");
		System.out.println(aLists.get(1));
		for(String a:aLists) {
			System.out.println(a);
		}
		System.out.println("=========================");
		for(int i=0;i<aLists.size();i++) {
			System.out.println(aLists.get(i));
		}
		
		System.out.println("===========集合转数组==============");
//		集合转数组
		String[] strArr =  aLists.toArray(new String[0]);
		for(String s:strArr) {
			System.out.println(s);
		}
		
//		数组转集合
		List<String> asListTwo = Arrays.asList(strArr);
/*
* Map使用
* put(k,v)增加元素
* remove(k) 删除元素
* replace(k,v) 修改元素
* get(k) 查看元素
* size() 获取长度
*/
Map<String,String> students = new HashMap<String,String>();
		students.put("name", "张三");
		students.put("age", "29");
		students.put("job", "tester");
		//students.remove("age");删除年龄
		students.replace("age", "30");
		System.out.println(students.get("age"));
		
		System.out.println("==================第一种遍历方式Collection==========");
//		第一种遍历方式,无索引不能用for循环
		Collection c = students.values();
		Iterator it = c.iterator();//将COLLECTION对象放入迭代器
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
		System.out.println("===========第二种遍历,通过key、value=======");
//		第二种遍历,通过key、value
		Collection c1 = students.entrySet();//将所有的键值对作为一个collection对象返回
		Iterator it1 = c1.iterator();
		while(it1.hasNext()) {
			Entry entry = (Entry)it1.next();
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
		
		System.out.println("======第三种通过key进行遍历");
//		第三种遍历方式,通过key
		Collection c2 = students.keySet();//将所有的key作为collection的对象
		Iterator it2 = c2.iterator();
		while(it2.hasNext()) {
			String key = (String)it2.next();
			System.out.println(key+":"+students.get(key));
		}

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值