欢迎光临散文网 会员登陆 & 注册

150天打卡Day22_集合(下篇)

2021-05-18 11:30 作者:关阿姨的Java日记  | 我要投稿

回顾

Collection接口定义了集合所共有的方法

  • add(E e)向集合中添加元素

  • addAll(E e)把集合中添加的元素再次全部添加

  • remove(Object o)将集合中的元素移除(一次只能移除一个)

  • removeAll(Object o)将移除集合中的所有元素

  • isEmploy()返回boolean值,判断集合中的元素是否为空

  • size()返回int类型,获取当前集合中的元素的个数

  • iterator()遍历集合中的元素

    • hasNext()判断下一个元素之后还有没有值

    • next()获取下一个集合元素

  • contains()用于判断指定元素是否被集合包含,包含则为true

泛型

泛型,又称为是参数化类型。是JDK1.5之后推出的一个特性,泛型可以表示属性的类型,方法参数的类型以及返回值类型。

 

package sesson13; /* * 泛型,又称为是参数化类型,是JDK1.5之后推出的一个特性 * 泛型可以表示属性的类型,方法参数的类型以及返回值类型 */ public class Num <T>{ private T  numA; private T numB; public Num(T numA, T numB) { super(); this.numA = numA; this.numB = numB; } }

测试:

public class NumTest { public static void main(String[] args) { Num<Double> n1 = new Num<Double>(1.1, 1.2); } }

泛型的值全都都是引用类型,是基本类型的包装类

泛型是编译器认可的,泛型的原型就是Object

泛型在集合中的应用

集合中的元素可以是任意类型的,但是我们可以使用泛型强制要求集合里面存什么元素。

所以呢泛型在集合中的应用就是用来约束集合中的元素。

List集合

  • List接口继承了Collection接口,因此包含了Collection接口中的所有方法

  • List集合中的元素允许重复,并且都是有序的。各元素的顺序就是添加元素的顺序,类似于Java数组,用于可以通过索引来访问集合中的元素。所以也通常是把ArrayList叫做可变数组。

  • List集合包括List接口以及List接口的所有实现类最常用的是ArrayList。

 

 

 

List接口的实现类

  • ArrayList类实现了可变的数组,允许保存所有元素,包括null。有具体的下标,适合查,不适合增和删

  • LinkedList类采用链表结构保存对象,不适合查,更适合增和删。

  • List接口还定义了两个非常重要的方法,作为List的实现类同样也具有这些方法。需要实现

    • get(int index) :获得指定索引位置的元素

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

  • get(),set()方法测试

测试

  • 重载后的add()remove()方法测试

List集合重载了一对Collection集合中的add,remove方法,支持使用下标操作元素

  • subList(int index,int end)

subList(int index,int end)方法用于获取子集,前切一刀,后切一刀,取中间

  • 集合与数组的相互转换

    • Collection提供了一个toArray方法,可以将当前集合转换为一个数组

    • 数组转为集合使用数组的工具类asList(),只能转为List集合

 

总结:

  • get()获取指定下标对应的元素

  • set()将指定的元素设置到指定位置上,返回值为原位置对应的元素,所以set()也是替换元素操作

  • 重载后的add(int index,E e)向指定位置插入指定元素,index:指集合中指定元素的位置

  • 重载后的remove()删除指定位置处的元素

  • subList(int index,int end)用于获取子集,前切一刀,后切一刀。取中间,对子集的操作其实就是对元集合的操作

  • toArray()把当前集合转为一个数组

  • asList()把数组转为一个集合

Set

代码

List集合和Set集合的区别

  • Set集合中的元素是无序的

    • list中的元素是有序的

  • Set集合中的元素不允许重复

    • list中的元素允许重复

  • 线程安全问题以后说

Map集合

Map集合没有继承Collection接口,包括Map接口以及Map接口的所有实现类。HashMap和TreeMap,,是key-value以键值对的形式存储。Map中不能包含相同的key,每个key只能映射一个value

  • Map集合中常用方法

  • Put(k k V v)   将给定的一组键值存储在Map集合中

  • get(Object k)  根据给定的Key获取对应的Value

  • remove( K,k)根据给定的Key 删除集合中Key对应的Value



  • 遍历Map集合

  • 遍历所有的Key    keySet()

  • 遍历所有的value(相对不常用) values()

  • 遍历每一组键值对   entrySet()

  • Map接口的两个子实现

    • HashMap:可以存null值,线程不安全,异步。

    • HashTable:不可以存null,线程安全,同步。

  • Map集合的应用场景广泛

原因:能确定key的值,就一定能精确快速的获取key对应的value。

很多的框架中的数据都是用Map存储的

Spring,Spring mvc, Struts2, tomcat, redis,mongodb,这些框架在内存中的数据存储都是用Map

总结:

  • Map集合:用键值对数据组成的集合

  • Put(k k V v) 往集合中添加元素

  • get(Object k)根据给定的Key值获取value

  • remove( K,k)根据给定的Key删除对应的键值对

  • 遍历所有的Key  

    • keySet() Map集合中的Key是一个Set集合,不允许重复

    • 遍历所有的value(相对不常用) values()

    • 遍历每一组键值对   entrySet()

 


150天打卡Day22_集合(下篇)的评论 (共 条)

分享到微博请遵守国家法律