集合 Collection Map体系 泛型详解

集合:

集合:对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能,java.util.* 下,降低开发成本

集合只能存储引用类型,数组引用类型,基本类型都可以

Collection 集合体系:

在这里插入图片描述

collection:父接口,代表任意类型的对象,无序无下标

父接口中定义了多个方法,由继承他的子类实现,list和set集合继承了Collection接口,也继承了Collection的多个方法,list继承了父类的方法,还定义了子类独有的方法。set中只继承了父类的方法,没有自己独有的方法。。list的方法,由list子类ArrayList ,Vector,LinkedList来实现,set的方法由HashSet ,LinkedHashSet, TreeSet 实现

	方法:
1. boolean   add(Object obj)  添加一个对象
2. boolean   addAll(Collection c) 将一个集合添加到另一个集合
3. void    clear() 清空此集合
4. boolean   contains(Object o) 检查此集合中是否包含o对象
5. boolean   equals(Object o)  比较此集合是否与o对象相等
6. boolean   isEmpty()  此集合是否为空
7. boolean   remove(Object o)  移除此集合中的o对象
8. int     size()  返回此集合中的对象个数
9. Object[]    toArray()  将此集合转换为数组
Collection<T> collection = new ArrayList<T>(); ( Vector<T> 。 LinkedList<T>   )   //collection 可以直接打印输出,默认自动调用toString()方法,可以重写toString()改变输出格式
List:子接口,有序,有下标,元素可重复
1. void add(int index, Object o) 在index位置插入对象O
2. boolean addAll(int index,Collection c) 在一个集合的index位置插入集合c
3. Object get(int index) 得到index位置的对象
4. List subList(int fromIndex, int toIndex) 返回fromIndex 和toIndex之间的集合对象 左闭右开
List接口的实现类:常用ArrayList List删除必须使用迭代器!!!

ArrayList:查询快,增删慢,运行效率快,线程不安全线性表,空间连续,通过指针指向可以快速找到,底层是动态数组

Vector: 查询快,增删慢,运行效率慢,线程安全线性表 数组结构实现,

LinkedList:查询慢,增删快,链表结构,空间不连续,必须找到前一个才能找到后一个

Collections工具类:集合工具类,定义了除存取外的集合常用方法
						Collections.方法名(List(T) list)
reverse(List(T),list)  	反转集合中的元素顺序
shuffle(List(T),list)	随机重置集合元素的顺序
sort(List(T),list)		升序排序,,,,,元素必需实现Compara接口,重写compareTo方法,规定排序规则
Set: 子接口 无序,无下标,元素不可重复
继承Collection的所有方法,使用foreach循坏;
Set接口实现类:常用HashSet

HashSet:基于HashCode实现元素不重复,当存入元素的哈希码相同时会调用==或equals进行确认,结果为true,拒绝存入

LinkedHashSet: 链表实现HashSet ,按照链表进行存储,即可保留元素的插入顺序

TreeSet: 基于排列顺序实现元素不重复,实现了SortedSet接口,对集合元素自动排序,元素对象的类型可实现Comparable接口,指定排序规则,通过CompareTo方法确定是否为重复元素

泛型:本质是参数化类型,把类型作为参数传递,强制集合元素的类型必需一致

泛型类,泛型接口,泛型方法 语法 < T , …>表示一种引用类型;

作用:提高代码重用性,防止类型转换异常,提高代码安全性

特点:

  1. 编译时即可检查,而非运行才抛出异常
  2. 访问时,不必类型转换(拆箱)
  3. 不同泛型之间引用不能相互赋值,泛型不存在多态;

不添加泛型时会导致类或集合,方法中的对象类型不同,操作容易出错。添加泛型后,编译时会检测

Map体系:

在这里插入图片描述

map接口的特点: 称为“映射” 存储任意键值对(key—Value)键:无下标不可重复。。值:无下标,可以重复

V put(K key,V value)  将对象存入到集合中,关联键值,key重复则覆盖原值
Object get(Object key) 根据键获取对应的值
Set<K> keySet() 返回所有的key
Collection<V> values()  返回包含所有值的Collection集合
Set<MAP.Entry<K,V>>  键值匹配的Set集合
Map集合的实现类:HashMap常用

HashMap:运行效率快,线程不安全,允许用null作为key或value

Hashtable:运行效率慢,线程安全,不运行null作为key或value

Properties:Hashtable的子类,要求key和value都是String。通常用于配置文件的读取

TreeMap:实现了SortedMap接口(map的子接口),可以对key自动排序,key需实现Comparable接口

TreeMap只能对键排序不能对值排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值