集合框架(Map)

目录

一、Map集合的特点

测试集合特点的前题,定义集合并给集合添加数值

1、无序

打印结果为:

2、以键值对的形式添加元素(键不能重复【Set】,值可以重复【List】)

2.1如果添加重复值的话:

2.2如果添加重复键的话:

可以看出键重复的话会发生替代的事件,值可以重复并且可以成功添加进去

3、它没有继承Collection接口

二、Map集合的遍历方式

1、获取map集合中的所有key的set集合,再通过key获取value值

2、先取出保存所有Entry的Set,再遍历此Set即可 (重要点)

三、HashMap、TreeMap与HashTable之间的区别

HashMap:异步,非安全的。键可以为null,值也可以为null

TreeMap:异步,非安全的。键不可以为null,值可以为null

HashTable:同步既排队,线程安全的。键不可以为null,值也不能为null

四、部分工具类

Collections:工具类,提供一组静态方法操作Collection集合

Arrays:工具类,提供了一组静态方法操作数组

五、总结

集合框架(Map)就分享到这了,希望能对大家有所帮助!


一、Map集合的特点

测试集合特点的前题,定义集合并给集合添加数值

Map<String, Object> map = new HashMap<String,Object>();
		
map.put("sc", "11");
map.put("qw", "22");
map.put("we", "33");
map.put("rf", "44");

1、无序

打印结果为:

根据打印结果可以得到Map集合的特点之一是无序性

2、以键值对的形式添加元素(不能重复【Set】,可以重复【List】)

在给Map集合添加数据是可以看出Map集合是以键值对的形式添加元素

2.1如果添加重复的话:

		map.put("sc", "11");
		map.put("qw", "22");
		map.put("we", "33");
		map.put("rf", "44");
		map.put("rf1", "44");

打印结果为:

2.2如果添加重复的话:

		map.put("sc", "11");
		map.put("qw", "22");
		map.put("we", "33");
		map.put("rf", "44");
		map.put("rf", "444");

打印结果为:

可以看出重复的话会发生替代的事件可以重复并且可以成功添加进去

3、它没有继承Collection接口

Map集合没有继承Collection接口

二、Map集合的遍历方式

1、获取map集合中的所有key的set集合,再通过key获取value值

		//不常用,基本不用
        Collection<Object> values = map.values();
		for (Object object : values) {
			System.out.println(object);
		}
		Set<String> keySet = map.keySet();
		
		for (String key : keySet) {
//			System.out.println(key);
			//通过键获取对应的值
			Object object = map.get(key);
			System.out.println(key+"="+object);
		}

2、先取出保存所有EntrySet,再遍历此Set即可 (重要点)

		//常用
        Set<Entry<String, Object>> entrySet = map.entrySet();
		for (Entry<String, Object> entry : entrySet) {
			System.out.println(entry);//所有值
			System.out.println(entry.getKey());//只拿键
			System.out.println(entry.getValue());//只拿值
		}

三、HashMap、TreeMap与HashTable之间的区别

		Map<String, Object> map = new HashMap<String,Object>();

		Map<String, Object> map1 = new TreeMap<String,Object>();
	
		Map<String, Object> map2 = new Hashtable<String,Object>();

HashMap:异步,非安全的。键可以为null,值也可以为null

TreeMap:异步,非安全的。键不可以为null,值可以为null

HashTable:同步既排队,线程安全的。键不可以为null,值也不能为null

打印:

		Set<Entry<String, Object>> entrySet = map.entrySet();
		
		for (Entry<String, Object> entry : entrySet) {
			System.out.println(entry);
		}

四、部分工具类

Collections:工具类,提供一组静态方法操作Collection集合

概念:集合工具类,定义了除了存取以外的集合常用方法。

public static void reverse(List list)//反转集合中元素的顺序
public static void shuffle(List list)//随机重置集合元素的顺序
public static void sort(List list)//升序排序(元素类型必须实现Comparable接口)
public class Demo3 {
	public static void main(String[] args) {
		List<Integer> list=new ArrayList<Integer>();
		list.add(20);
		list.add(10);
		list.add(30);
		list.add(90);
		list.add(70);
		
		//sort排序
		System.out.println(list.toString());
		Collections.sort(list);
		System.out.println(list.toString());
		System.out.println("---------------");
		
		//binarySearch二分查找
		int i=Collections.binarySearch(list, 10);
		System.out.println(i);
		
		//copy复制
		List<Integer> list2=new ArrayList<Integer>();
		for(int i1=0;i1<5;++i1) {
			list2.add(0);
		}
		//该方法要求目标元素容量大于等于源目标
		Collections.copy(list2, list);
		System.out.println(list2.toString());
		
		//reserve反转
		Collections.reverse(list2);
		System.out.println(list2.toString());
		
		//shuffle 打乱
		Collections.shuffle(list2);
		System.out.println(list2.toString());
		
		//补充:list转成数组
		Integer[] arr=list.toArray(new Integer[0]);
		System.out.println(arr.length);
		//补充:数组转成集合 
		String[] nameStrings= {"tang","he","yu"};
		//受限集合,不能添加和删除
		List<String> list3=Arrays.asList(nameStrings);
		System.out.println(list3);
		
		//注:基本类型转成集合时需要修改为包装类
	}
}

Arrays:工具类,提供了一组静态方法操作数组

1、Arrays.sort(Object[] array) //对数组元素进行排序

2、Arrays.asList(T…data) //将数组转换为集合,接收一个可变参数

3、Arrays.toString(Object[] array) //返回数组元素的字符串形式

4、Arrays.deepToString(Object[] array) //返回多维数组元素的字符串形式

5、Arrays.binarySearch(Object[] array, Object key) //使用二分法查找 “有序数组” 内指定元素的索引值

6、Arrays.copyOf(T[] original,int newLength) //拷贝数组,下标从0开始,如果新数组长度超过原数组长度,会用null进行填充

7、Arrays.copyOfRange(T[] original,int from,int to) //拷贝数组,指定起始位置和结束位置,如果新数组长度超过原数组长度,会用null进行填充

8、Arrays.fill(Object[] array,Object obj) //用指定的元素填充整个数组,替换掉原来的元素

9、Arrays.fill(Object[] array,int fromIndex,int toIndex,Object obj)
import java.util.Arrays;
import java.util.List;
public class ArraysTest {
    public static void main(String[] args) {

        int[]  arr1 = {23,4,78,9,36,20};
        //测试Arrays.sort(Object[] array)   对数组元素进行排序
        Arrays.sort(arr1);


        //测试Arrays.toString(Object[] array)  返回数组元素的字符串形式
        System.out.println(Arrays.toString(arr1));


        //测试Arrays.asList(T...data)      将数组转换为集合,接收一个可变参数
        /*
          Arrays.asList(T...data)      将数组转换为集合,接收一个可变参数
          该方法返回的是Arrays内部静态类ArrayList,而不是我们平常使用的集合ArrayList
          该静态类ArrayList没有覆盖父类的add、remove方法,如果直接调用会报异常:
          java.lang.UnsupportedOperationException
         */
        String[] arr2 = {"abc","def","rgh","lef","pyth"};
        List<String> list = Arrays.asList(arr2);
        //list.add("gbn");//java.lang.UnsupportedOperationException
        for (String ele: list ) {
            System.out.println(ele);
        }
        /*
          如果将基本类型的数组作为参数传入,Arrays.asList(T...data)会把整个数组
          当作转换后的List的第一个元素
         */
        int[] arr3 = {345,6,3,2,1};
        List<int[]> list1 = Arrays.asList(arr3);
        System.out.println(list1.size());//长度为:1

        //Arrays.deepToString(Object[] array)  返回多维数组元素的字符串形式
        int[][] arr4 = {{1,2,3},{4,5,6},{7,8,9}};
        System.out.println(Arrays.deepToString(arr4));//[[1, 2, 3], [4, 5, 6], [7, 8, 9]]


        //Arrays.binarySearch(Object[] array, Object key)    使用二分法查找 "有序数组" 内指定元素的索引值
        int[] arr5 = {78,65,2,3,89,12,45};
        Arrays.sort(arr5);
        int index = Arrays.binarySearch(arr5,3);
        System.out.println(index);// 1


        //Arrays.copyOf(T[] original,int newLength)
        // 拷贝数组,下标从0开始,如果新数组长度超过原数组长度,会用null进行填充
        String[] arr6 = {"北京","上海","杭州","成都","深圳","西安","南京"};
        String[] arr6_copy = Arrays.copyOf(arr6,4);
        System.out.println(Arrays.toString(arr6_copy));//[北京, 上海, 杭州, 成都]


        //Arrays.copyOfRange(T[] original,int from,int to)
        // 拷贝数组,指定起始位置和结束位置,如果新数组长度超过原数组长度,会用null进行填充
        String[] arr6_copy2 = Arrays.copyOfRange(arr6,2,4);
        System.out.println(Arrays.toString(arr6_copy2));//[杭州, 成都]

        //Arrays.fill(Object[] array,Object obj)   用指定的元素填充整个数组,替换掉原来的元素
        int[] arr7 = {2,3,4,5,6,7,8};
        Arrays.fill(arr7,1);
        System.out.println(Arrays.toString(arr7));//[1, 1, 1, 1, 1, 1, 1]

        //Arrays.fill(Object[] array,int fromIndex,int toIndex,Object obj)
        //用指定的元素从起始位置到结束位置(左闭右开)填充数组,替换掉数组中原来的元素
        //超出数组的长度会报异常:ava.lang.ArrayIndexOutOfBoundsException
        String[] arr8 = {"北京","上海","杭州","成都","深圳","西安","南京"};
        Arrays.fill(arr8,3,5,"青岛");//[北京, 上海, 杭州, 青岛, 青岛, 西安, 南京]
        //Arrays.fill(arr8,3,8,"青岛");//ava.lang.ArrayIndexOutOfBoundsException
        System.out.println(Arrays.toString(arr8));
    }
}

五、总结

 集合框架(Map)就分享到这了,希望能对大家有所帮助!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值