Java12章总结

集合类

官方说法将它看成一个容器,集合中的各个对象,很容易将其从集合中取出来,也很容易将其存放到集合中,还可以将其按照一定的顺序进行摆放

12.1集合类概述

相比于数组,集合没有边界,且不会占用过多内存,拿服务器举例,一个用数组来存用户数据,当他的用户数量超过数组长度,数据将存储不下,这时需要停服维护,且你不知道下一次该把数组改多大,会有多少用户注册,另一个使用集合来存储用户数据,当用户量超过当前容量,集合会适当扩大容量,可以把它看作火车,车厢不够可以加,但数组不能,所以相比于数组,集合的用处和实用性都远高于数组

常用的集合类有List集合,Set集合和Map集合,其中List集合和Set集合继承了Collection接口,各接口提供了不同的实现类

下图是集合类的继承关系:

12.2Collection接口

Collection接口时层次结构中的接口,构成Collection的单位称为元素,它不能直接使用,但是提供了方法,例如添加元素,删除元素,管理元素。因为List接口和Set接口都继承了Collection接口,所以这些方法,List集合和Set集合都是通用的

下图是Collection接口的常用方法:

例题12.1

12.3List接口

12.3.1List接口

List接口继承了Collection接口,因此包含Collection接口中的所以方法,此外,它还有两个非常重要的方法

get(int index):获取指定索引位置的元素
set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象

12.3.2List接口的实现类

List接口的常用实现类有ArrayList类与LinkedList类

ArrayList类:实现了可变的数组,允许保存所有元素,包括null,并可根据索引位置对集合进行快速的随机访问。缺点就是向指定的u怂恿位置插入对象或删除对象的速度较慢。

LinkedList类:采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象。需要向集合中插入,删除对象时,使用LinkedList类实现的List集合的效率更高,但对于随机访问合集中的对象,使用LiknedList类实现List集合的效率较低。

实例化List集合的代码如下:

List<E> list = new ArrayList<>();
List<E> list2 = new LinkedList<>();

12.4Set集合

Set接口常用的实现类有HshSet类与TreeSet类

HashSet类实现Set接口,由哈希表支持,他不保证Set集合的迭代顺序,特别是它不保证顺序恒久不变。此类允许使用null元素

TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口,因此TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可按照指定比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序

例题12.3

12.5Map类

Map集合没有继承Collerction接口,,其提供的是key到value的映射。Map集合中不能包含相同的key,每个key只能映射一个value。

12.5.1Map接口

Map接口提供了将key映射到值的对象。一个映射不能包含重复的key,每个key最多只能映射到一个值

12.5.2Map接口的实现类

常用的接口有HashMap类和TreeMap类。

HashMap类:

是基于哈希表的Map接口,此实现提供所有可选的映射操作,并允许使用null值和null键,但必须保证键的唯一性。

TreeMap类:

不仅实现了Map接口,还实现了java,util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加,删除和定位映射关系时,TreeMap类比HashMap类性能稍差。

package 十二;
 
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class HashMapText {
	public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();
        map.put("ISBN-978654","java从入门到精通");
        map.put("ISBN-978361","Android从入门到精通");
        map.put("ISBN-978893","21天学Android");
        map.put("ISBN-978361","21天学java");
        Set<String> set = map.keySet();
        Iterator<String> it = set.iterator();
        System.out.println("key 值:");
        while (it.hasNext()){
        	String key = it.next();
        	String value = map.get(key);
            System.out.println(key + " " + value);
        }
        
		/*
		 * Collection<String> coll = map.values(); it = coll.iterator();
		 * System.out.println("\nvalue 值:"); while (it.hasNext()){
		 * System.out.print(it.next() + " "); }
		 */
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值