集合

集合

集合可以分位单列集合和双列集合

  1. 单列集合
    Collection:是单例集合的根接口,用于存储一系列符合某种规则的元素。Collection集合一共有两个子接口,分别对是List和Set。其中,List集合的特点是元素有序,可以重复;Set集合的特点是元素无序并且不可重复。List接口主要实现的类有ArrayList和LinkList;Set接口主要实现的类有HashSet和TreeSet。
  • List接口下有ArrayList和LinkList接口,两者的区别在于ArrayList内部的数据存储结构时数组形式,在增加或者删除指定位置的元素时会创建新的数组,效率低,不适合大量的增删操作;LinkList是为了克服这个问题而实现的另外一个实现类。
  • 关于Collection集合的遍历方法
    Iterator遍历;foreach遍历;forEach遍历(JDK 8)
  • Set接口特点是无需无重复
    该接口下实现了HashSet和TreeSet两个实现类;HashSet是根据对象的哈希值来确定元素在集合中的位置;TreeSet则是以二叉树的方式来存储元素。
    注意:在HashSet实现类中,当存储数据时调用了hashCode()方法和equals()方法,所以要对这两个方法进行重写。
  1. 双列集合
    Map:是双列集合的根接口,用于存储具有键(Key),值(Value)映射关系的元素。Map集合中每个元素都包含一对键值,并且Key是唯一的,在使用Map集合时,可以通过指定的Key找到对应的Value。Map接口主要的实现类有HashMap和TreeMap。
  • HashMap集合
    该集合的键和值允许为空,但键不能重复,且集合中的元素是无序的。
    HashMap集合的遍历
    使用Iterator迭代器进行遍历:
    在遍历前需要先将Map集合转换为Iterator接口对象,然后进行遍历,由于Map集合中的元素是由键值对组成的,所以使用Iterator接口遍历Map集合时,会有两种将Map集合转换为Iterator接口对象再进行遍历的方法,即keySet()方法和entrySet()方法。
    使用keySet()方法:
Set keySet=map.keySet();
Iterator it=keySet.iterator();
while(it.hashNext()){
	Object key=it.next();
	Object value=map.get(key);
}

使用entrySet()方法:

Set entrySet=map.entrySet();
Iterator it=entrySet.iterator();
while(it.hashNext()){
	Map.Entry entry=(Map.Entry) (it.next());
	Object key=entry.getKey();
	Object value=entry.getValue();
}

使用forEach方法遍历Map集合
该方法的使用跟单列集合使用相同。

  • TreeMap集合
    使用方法跟单列集合TreeSet一样,可以看文章上面。

  • Properties集合
    Map集合当中还有一个实现类Hashtable,它和HashMap十分相似,其中主要的区别在于Hashtable是线程安全的。但Hashtable类有一个子类Properties在实际开发应用中非常重要,Properties主要用来存储字符串类型的键和值,在实际开发中,经常使用Properties集合类来存取应用的配置项。

泛型

使用泛型可以将确定整个集合是数据类型,避免在将整个集合进行强制转换时发生错误。

集合常用工具类

1.Collections
2.Arrays
Collections是对集合进行操作的,Arrays是对数组进行操作的。
在Arrays下有:
使用sort()方法进行排序;使用binarySearch(Object[] a,Object key)方法查找元素,使用该方法我们需要注意的是,该方法指针对排序后的数组进行元素查找,因为该方法采用的是二分法查找;使用copyOfRange(int [] original,int from,int to)方法拷贝元素;使用fill(Object[] a,Object[] val)方法替换元素。

聚合操作

聚合操作的步骤:
1.将原始集合或者数组对象转换为Stream流对象;
2.对Stream流对象中的元素进行一系列的过滤,查找等中间操作,然后仍然返回一个Stream流对象;
3.对Stream流进行遍历,统计,收集等终结操作,获取想要的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值