黑马程序员——集合框架(四)

------- android培训java培训、期待与您交流! ----------

一、Map

该集合存储键值对。一对一往里存。而且要保证唯一性。Map有三个子集如下:

Map

         |--Hashtable:底层是哈希表数据结构,不可以存入null键和null值。该集合是线程同步的jdk1.0 效率比较低

         |--HashMap:底层是哈希表数据结构,允许使用null键和null值,该集合是不同步的将Hashtable替代 jdk1.2 效率高

         |--TreeMap:底导是二叉树数据结构。线程不同步,可以用于给Map集合中的建进行排序

Map集和Set集很像,其实,Set底层就是使用了Map集合。所具有方法如下,和Set类似。

1.添加

         put(Kkey, V valu)

         putAll(Map<?extends K,? extends V> m)

2.删除

         clear()

         rmove(Objectkey)

3.判断

         containsValue(Objectvalue)

         containsKey(Objectkey)

         isEmpty()

4.获取

         get(Objectkey)

         size()

         values()

Map所特有的方法有两种取出方式:Map集合的取出原理:将map集合转成Set集合,在通过迭代器取出。

1.Set<key> keySet:将Map中所有的键存入到Set集合。因为Set具备迭代器。

                   所有可以迭代方式取出所有的键,在根据get方法。获取每一个对应的值。

2. Set<map.Entry> entrySet:将Map集合中的映射关系存入到Set集合中,而这个关系的数据类型就是Map.Entry

第一种取出试代码实例如下:

import java.util.*;
class MapDemo2 
{
	public static void main(String[] args) 
	{
		Map<String,String> map = new HashMap<String,String>();
		map.put("02","zhangsan2");
		map.put("03","zhangsan3");
		map.put("04","zhangsan4");
		map.put("05","zhangsan5");
		
	//先获取Map集合的所有键的Set集合.keySet()
		Set<String> keySet = map.keySet();

		//有了Set集合,就可以获取其迭代器。
		Iterator<String> it = keySet.iterator();

		while (it.hasNext())
		{
			String key = it.next();
			//有了键可以通map集合的get方法获取对其对应的值。
			String value = map.get(key);			
			System.out.println("key:"+key+"    value:"+value);
		}
		
		
	}
}


第二种取出试代码实例如下:

import java.util.*;
class MapDemo3 
{
	public static void main(String[] args) 
	{
		Map<String,String> map = new HashMap<String,String>();
		map.put("02","zhangsan2");
		map.put("03","zhangsan3");
		map.put("04","zhangsan4");
		map.put("05","zhangsan5");
		Set<Map.Entry<String,String>> entrySet = map.entrySet();//特别注意:entrySet()方法为Map内部接口EntrySet中的静态方法
		
		Iterator<Map.Entry<String,String>> it = entrySet.iterator();

		while (it.hasNext())
		{
			Map.Entry<String,String> me = it.next();
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key+":"+value);

		}	
		
	}
}

Entry其实就是一个内部接口,它是Map接口中一个内部接口。

 

二、Arrays

Arrays:用于操作数组的工具类。

里面都是静态方法。

asList:将数组变成list集合

把数组变成集合有什么好处?可以使用集合的思想和方法来操作数组中的元素。不过要注意:将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定的。

 

代码实例如下:

 

import java.util.*;
class ArraysDemo 
{
	public static void main(String[] args) 
	{
		//int[] arr ={2,4,5};
		//System.out.println(Arrays.toString(arr));


		String[] arr = {"abc","cc","kkk"};
		

		List<String> list = Arrays.asList(arr);
		//sop("contains:"+list.contains("cc"));
		//list.add("qq");//UnsupportedOperationException
		//int[] nums = {2,4,5};
		Integer[] nums = {2,4,5};
		List<Integer> li = Arrays.asList(nums);
		/*
			如果数组中的元素都是对象,那么变成集合时,数组中的元素直接集合中的元素
			如果数组中的元素是基本数据类型,那么会将数组作为集合的元素存在。
		*/
		sop(li);
	}
	public static boolean myContains(String[] arr,String key)
	{
		for (int x=0;x<arr.length ;x++ )
		{
			if(arr[x].equals(key))
				return true;
		}
		return false;
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值