请选择 进入手机版 | 继续访问电脑版
游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    17712677918

    电子邮件

    857020071@qq.com
  • 扫描二维码

    关注微信公众号

推荐阅读
ucomxu 版主
未知星球 | 未知职业
  • 关注0
  • 粉丝0
  • 帖子32
热议话题
优康服务中心
2020-01-03 0
会员体系 [*]个人服务9.9元/年 [*]企业服务99元/年 [*]拓荒者999元/终生 会员服务个
精选帖子

java中的集合

[复制链接]
ucomxu 发表于 2021-9-22 09:43:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

1 Collection集合
1.1 集合概述

    集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢?

    数组的长度是固定的。集合的长度是可变的。

    数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

1.2 集合框架

    Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。

    List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,

    Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。

1.3 Collection 常用功能

Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:

  • public boolean add(E e): 把给定的对象添加到当前集合中 。







  •     public void clear() :清空集合中所有的元素。







  •     public boolean remove(E e): 把给定的对象在当前集合中删除。







  •     public boolean contains(E e): 判断当前集合中是否包含给定的对象。







  •     public boolean isEmpty(): 判断当前集合是否为空。







  •     public int size(): 返回集合中元素的个数。







  •     public Object[] toArray(): 把集合中的元素,存储到数组中。


  • import java.util.ArrayList;



  • import java.util.Collection;







  • public class Demo1Collection {



  •     public static void main(String[] args) {



  •         // 创建集合对象



  •         // 使用多态形式



  •         Collection<String> coll = new ArrayList<String>();



  •         // 使用方法



  •         // 添加功能  boolean  add(String s)



  •         coll.add("小李广");



  •         coll.add("扫地僧");



  •         coll.add("石破天");



  •         System.out.println(coll);







  •         // boolean contains(E e) 判断o是否在集合中存在



  •         System.out.println("判断  扫地僧 是否在集合中"+coll.contains("扫地僧"));







  •         //boolean remove(E e) 删除在集合中的o元素



  •         System.out.println("删除石破天:"+coll.remove("石破天"));



  •         System.out.println("操作之后集合中元素:"+coll);







  •         // size() 集合中有几个元素



  •         System.out.println("集合中有"+coll.size()+"个元素");







  •         // Object[] toArray()转换成一个Object数组



  •         Object[] objects = coll.toArray();



  •         // 遍历数组



  •         for (int i = 0; i < objects.length; i++) {



  •             System.out.println(objects);



  •         }







  •         // void  clear() 清空集合



  •         coll.clear();



  •         System.out.println("集合中内容为:"+coll);



  •         // boolean  isEmpty()  判断是否为空



  •         System.out.println(coll.isEmpty());     



  •     }



  • }




2 Iterator迭代器2.1 Iterator接口

JDK专门提供了一个接口java.util.Iterator,遍历集合中的所有元素。

Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,

Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。

想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作,获取迭代器的方法:

    public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

Iterator接口的常用方法如下:

    public E next():返回迭代的下一个元素。

    public boolean hasNext():如果仍有元素可以迭代,则返回 true。

接下来我们通过案例学习如何使用Iterator迭代集合中元素:

    注意::在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会发生java.util.NoSuchElementException没有集合元素的错误。

2.2 迭代器的实现原理

当遍历集合时,首先通过调用t集合的iterator()方法获得迭代器对象,然后使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。

Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素代元素的过程。

在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。

2.3 增强for

增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式:

for(元素的数据类型  变量 : Collection集合or数组){
    //写操作代码
}

它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。


  • //练习1:遍历数组



  • public class NBForDemo1 {



  •     public static void main(String[] args) {



  •         int[] arr = {3,5,6,87};



  •         //使用增强for遍历数组



  •         for(int a : arr){//a代表数组中的每个元素



  •             System.out.println(a);



  •         }



  •     }



  • }



  • // 练习2:遍历集合



  • public class NBFor {



  •     public static void main(String[] args) {        



  •         Collection<String> coll = new ArrayList<String>();



  •         coll.add("小河神");



  •         coll.add("老河神");



  •         coll.add("神婆");



  •         //使用增强for遍历



  •         for(String s :coll){//接收变量s代表 代表被遍历到的集合元素



  •             System.out.println(s);



  •         }



  •     }



  • }


  tips: 新for循环必须有被遍历的目标。目标只能是Collection或者是数组。新式for仅仅作为遍历操作出现。







上一篇:通信线缆和光纤光缆专业领域现状与发展分析
下一篇:光纤通信技术发展现状与展望
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

icitu.com 信息谷-icit软硬件产品营销与行业智慧化解决方案实施供需对接空间,信息人家园-信息人之间互助互惠互利的资源整合空间,icit人团结起来帮助人们沟通与建设,icit unite to help people communicating&constructing。
0512-68181818
关注我们
  • 访问移动手机版
  • 官方微信公众号

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc. 优康设计 ( 苏ICP备10066271号-2 )|网站地图