JAVA的集合学习

开发工具与关键技术:MyEclipse 10

作者:程杨媛

撰写时间:2019.4.15

作为JAVA的工具类,集合类的用处非常大,它对于一些数量不确定的数据,关联数组的保存非常适用。在此我根据了前几天上课对JAVA集合的相关知识的学习总结了此篇JAVA的专题技术文献。

JAVA集合可大致分为四种体系List(代表有序重复的集合),Set(与List恰好相反代表无序不可重复的集合),Queue(是在JAVA5时增加的一种队列集合),Map(就是代表着那些具有映射关系的集合)。这里需要值得注意的是集合类的功能主要是对数据的保存,所以我们又可以叫它容器类,它里面是只能保存对象,而不能像数组一样还可以是基本的一些类型的值。我们的JAVA集合类主要是由Collection和 Map两个接口而产生。这两个接口同时也是包含了一些子接口或实现类。Collection包括List和Set两个有序无序的接口。Map中就包括HashMap,LinkHashMap.TreeMap

首先我们要说的是List集合,我们知道它是有顺序而言,它允许使用重复的元素,List集合会默认按元素的顺序添加元素。Add(添加的索引位置,添加的值),Set(修改的索引位置,修改的值),Remove(移除的索引),我们想要移除集合中的值就需要增加上所赋值的类型list.remove(Integer.valueOf(1));

   

除开单个元素的添加移除以外,我们也有批量的操作。比如addAll,removeAll,用法同add,remove一样。对这样一个列表数据,我们有时需要使用For循环来遍历数据,遍历循环的种类很多,举例两个代表了解第一种size() 返回List中元素的个数,get(int index) 根据索引获取元素 第二种Foreach格式来直接遍历list.我们还需要了解迭代器Iterator<E>。迭代器的注意点它所迭代的数据类型必须和list列表传出的数据类型一致,不可以不同首先我们先传出列表自带的迭代器,然后再通过while循环自动拆箱

set无序不重复列表集合,用法跟List基本上没有差异,以Hashset为例,添加元素set.add(),添加元素的时候可以存放空值,但是 只能够放入一个NULL。移除remove();set用法也有批量新增和移除,removeAll和addAll.如果要输出set就可在打印时加上set.tostring();hashset用foreach循环来遍历数据。迭代器的遍历写法和list一样可用while以及for循环的方式,所迭代的数据类型必须和set列表传出的数据类型一致。Size()获取元素个数的语法这里也同样适用。还有一个查找HashSet是否包含某个或多个元素我们要记得用contains,containsAll.hashSet中的数据排列,不是我们手动控制的,它的排列规则是根据HashCode的编码来排列,根据所传入的数据相对应各自的哈希码的顺序依次排列。

TreeSet是SortedSet接口的实现类,可以保证各元素的排列状态。相对于Set这一集合,TreeSet还有其他的方法。 用first() 返回此 set 中当前第一个元素。 floor(E e)返回此set中小于等于给定元素的大元素;如果不存在,则返回null。 higher(E e)返回此set中大于给定元素的小元素;如果不存在,则返回null。 last() 返回此set中当前后一个元素。 lower(E e)返回此set中严格小于给定元素的大元素;如果不存在,则返回null。headSet(E toElement) 返回此set的部分视图,其元素严格小于 toElement。tailSet(E fromElement) 返回此set的部分视图,其元素大于等于 fromElement。subSet(E fromElement, E toElement)返回此set的部分视图,其元素从 fromElement到 toElement,简单的说就是数学中前闭后开的区间显示。

Map映射集合-代表接口中的键和值。赋一个键和值放在Map对象中,就可以实现用键来取值的操作了。

在开始申明Map的时候,遇到一些基本的数据类型,我们需要在申明的时候用到包装类,Map中的新增元素数据用的是put.PUT可以增加列表元素,也可以通过增加的键进行对对应值的修改。

Map的判断是否存在键和值用containsKey();containsValue();存在即True;不存在就是False.Map同样具备循环遍历数据以及迭代器的使用,和上面的List,set大同小异。Set有TreeSet. Map也有相应的TreeMap来提供一些访问的方法。TreeMap根据键的顺序访问值对的方法:,而且这些方法的出现使用都应该是成双成对的形式。 所以在TreeMap中我们使用的关键字应该写成 firstEntry()返回一个与此映射中的小键关联的键­值映射关系;如果映射为空,则返回null,firstKey()返回此映射中当前第一个键。last也是一样的用法。TreeMap因为和映射相关,除开和TreeSet的方法展示形式略微不同,其余的一些小于最大值,大于最小值,截取等都是一样的。在使用上我们有时需要注意区分。

以上是集合四大体系常用的三种。还有一种JAVA5以后才有的队列集合Queue。因为在使用add,remove方法的时候,失败会抛出异常,所以一般都不被推荐给人使用。Queue的方法相对较少,避免失败抛开异常,我们在增加元素的时候会选择使用offer。语法格式同add一样。Eg:queue.offer("张翰"); 然后remove也可换成用poll.eg:System.out.println(queue.poll());poll在获取元素的时候会同时将队列的首个元素给移除,而peek(),就只是能获取元素,移除不了首个元素。想获取队列中的元素。可以使用它的elem ent()方法:Eg:queue.element("张翰");

集合中还有两个比较和排序的方法,Comparable和Comparator .两个方法相类似又存在不同之处。在有顺序的集合中,我们需要用到Comparable.这里Comparable是一个接口所以我们在进行排序之前要对集合中的元素进行重写,不过只有我们自己定义的类型可以使用此方法,JAVA的原生类以及它里面的封装类不可使用。因为是接口类所以使用之前需要创建。接下来就按照正常代码步骤写下去,无法将对象直接打印。这里需要foreach遍历来查看打印数据,还用到了排序工具进行排序,但它打印出来的顺序不是有序的,这时我们需要新构造一个方法,遵循从小到大 :this-o从大到小:o-this

用Comparator时不需要写接口,直接可不需要修改源代码, 而是另 外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传 递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用 的逻辑,使其可以匹配一些比较简单的对象。排序时调用Collections sort方法。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值