Java基础总结十八(集合3)

                                            Map接口

1.1     Map概念及使用

1.1.1   Map概念

双列集合是每个元素都有键与值两部分组成的集合,记录的是键值对对应关系。即通过键可以找到值。

常用子类:

最常用的双列集合是Map下的子类HashMap。

Hashtable也是Map集合的一种已被HashMap取代。

Map集合的特点,如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。

1.1.2   基本使用

Map(HashMap)的使用:创建对象时加入两个泛型。

         Map<k,v>

key - 此映射所维护的键的类型

value - 映射值的类型

常用方法:

public V put(K key,V value)         //加入元素,则新值会覆盖掉旧值
public V get(Object key)                    //根据键找值
public Set<K> keySet()                      //返回所有键的集合
Collection<V> values()                     //返回所有值的集合
可以根据以上方法,完成Map集合遍历,通常使用keySet方法配合get方法。
   		//创建双列集合对象
		Map<String, String> map = new HashMap<String, String>();
		//向集合中添加元素
		map.put("呼保义", "宋江");
		map.put("玉麒麟", "卢俊义");
		map.put("智多星", "吴用");
		map.put("入云龙", "公孙胜");
		//返回集合中所有键的集合
		Set<String> keySet = map.keySet();
		//遍历键的集合,依次获取每一个键
		for (String key : keySet) {
			//通过键获取集合中的每个值并打印
			String value = map.get(key);
			System.out.println(value);
	}

1.1.3  Map存储自定义类型

在1.1.1中,我们介绍了Map集合的特点,如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。

Map存储自定义类型时,需要做到键不能重复,此时,其键的判断规则与HashSet的判断规则相同。如果想通过内容,而非通过地址比较两个对象是否相同,就需要重写该类型的hashCode与equals方法。

1.1.4   Entry键值对对应关系

在Map类设计时,提供了一个嵌套类:Entry。Entry将键值对对应关系封装成了对象。是我们可以独立使用,比如遍历Map集合。可以从一个Entry对象中中获取一个键值对的键与值。

Set<Map.Entry<K,V>> entrySet()    方法用于返回某个集合所有的键值对对象。

Entry中的方法如下:

     K getKey()                  获取键

     V getValue()              获取值

                                              容器工具类

2.1     Collections

Collections是集合工具类,专门对集合进行操作。常用方法:

         public static<T> void sort(List<T> list)                                //排序

         public static<T> int binarySearch(List<?> list,T key)       //查找元素索引

         public static voidshuffle(List<?> list)                                   //打乱元素顺序

2.2     Arrays

Arrays是数组工具类,常用方法:

public static int binarySearch(Xxx[] a,Xxx key)                   //查找元素索引

public static void sort(Xxx[] a)                                      //排序

public static String toString(Xxx[] a)                            //返回字符串内容

 

集合ArrayList转为数组的方法为ArrayList的以下两个方法:

public Object[] toArray()                                                          //集合转数组

public <T> T[] toArray(T[] a)


2.3     可变参数

Collections中有一个方法可以一次加入多个元素

Collections中有一个方法可以一次加入多个元素

               public static <T> boolean addAll(Collection<? super T> c,T... elements)
        该方法使用到了可变参数,即定义时并不知道要传入多少个实际参数。此时设计成...的方式,此时可以在调用该方法时,
一次传入多个参数。传入的多个数将被自动组织成数组,我们只要操作生成的数组即可。
        类似的方法还有Arrays的public static <T>  List<T>  asList(T... a)         //数组转固定长度集合
        注:可变参数只能放在最后定义。可变参数方法本质是数组,所以不可以与数组类型参数重载。

2.4     静态导入

在导包的过程中我们可以直接导入静态部分,这样某个类的静态成员就可以直接使用了。在源码中经常会出现静态导入,而在日常开发中几乎没有人使用。

静态导入格式:

import static XXX.YYY;   导入后YYY可直接使用。

                                     集合框架总结





3.1     简单数据结构

数据结构指的数据存储和组织方式,如日常的容器中,有方形、圆形、存放液体、固体,都是。

我们在前边见到了多种不同结构的集合,每种集合有各自数据结构特点,总结如下:

数组结构:一块连续的存储区域

链表结构:每个元素指向下一个元素

队列结构:容器先进先出的规则

栈结构:容器先进后出规则

3.2     集合嵌套

集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如单列集合嵌套、双列集合与单列集合嵌套、双列集合嵌套。 

单列集合嵌套:

         北京大学(List表示)有多个分校(list表示),每个分校有多个班级(字符串)。

双列集合与单列集合嵌套

         北京大学Map表示,key:分校名称、value:分校集合)

         有多个分校(List表示)

         每个分校有多个班级(字符串)。

 

双列集合嵌套

         北京大学(Map表示,key:分校名称、value:分校集合)

         有多个分校(Map表示,key:班级名称、value 班级对象)

         每个分校有多个班级(自定义班级类MyClass)。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小盒子_spring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值