• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Java:集合一

武飞扬头像
不爱吃苹果’‘
帮助2

目录

一.集合概述:

二.collection常见方法

三.迭代器

四. 增强for循环


一.集合概述:

  1.1  集合简介:

  • 集合是Java提供的一种容器,能够存储多个数据。
  • Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类,还有一些实现算法

  1.2  集合和数组的区别:

  • 长度:集合的长度是可以变化的,数组长度是固定的
  • 存储数据:集合存储的全部是引用数据类型,数组既可以存储引用数据类型,也可以存储基本数据类型。数组只可以存储一种数据类型

注意:集合也可以存储基本数据类型,只要存储对应的包装类就可以了。如int-->integer

 list.add(20); //相当于自动装箱,Integer i=20;
       

  1.3  集合常用类的继承集合体系:

Java集合分为collction和Map两个根接口,这两个接口包含子接口(接口与接口之间可以继承)以及实现子类。

具体如下图:

学新通

黄色是接口,蓝色是实现类;

  • Iterator接口是输出接口,用于遍历输出collection集合中的元素(迭代输出),literator对象就是迭代器, 当实现类是实现collection时,同时也要实现lierator。
  • collection有三个子接口,分别是java.util.List和java.utli.Set以及Java.util.queue。List存储不重复,有序的元素,set存储重复的元素,而Queue 是 Java 提供的队列实现
  • List接口的主要实现类有java.util.ArrayListjava.util.LinkedListSet接口的主要实现类有java.util.HashSetjava.util.LinkedHashSet

注意:接口只是提供一个规范,告诉我们必须要干什么。我们要对集合中的元素操作时,需要通过实现子类,实例化对象,调用方法,实现操作。

把集合分为接口,实现子类,算法这样更明显体现他的继承体系

如下图:

学新通

二.collection常见方法: 

Collection是所有单列集合的父接口,对于他的子接口以及实现子类,collction的方法也是通用的。

2.1  collection常见方法以及作用:


1.void clear()    清空所有集合元素
2.boolean contains(Object o)    判断指定集合是否包含对象o
3.boolean contains(Object 0)  判断当前集合中是否包含给定的对象。
4.boolean isEmpty()    判断指定集合的元素size是否为0
5.boolean remove(Object o)    删除集合中的元素对象o,若集合有多个o元素,则只会删除第一个元素
7.int size()    集合的元素个数
8.T[] toArray(T[] a)    将集合转换为T类型的数组

9.boolean add(E e)    向集合添加元素e,若指定集合元素改变了则返回true

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

代码演示:

  1.  
    public class Oopjihe {
  2.  
    public static void main(String[] args) {
  3.  
    //创建一个集合对象
  4.  
    ArrayList list = new ArrayList();
  5.  
    //判断集合长度
  6.  
    int startsize=list.size();
  7.  
    list.add("hello");
  8.  
    list.add("add");
  9.  
    list.add("20");
  10.  
    list.add(20);
  11.  
    //相当于自动装箱,
  12.  
    Integer i=20;
  13.  
    //判断长度
  14.  
    int endsize=list.size();
  15.  
    //移除某个元素
  16.  
    list.remove("hello");
  17.  
    //判断是否有这个元素
  18.  
    boolean b1=list.contains("hello");
  19.  
    System.out.println(b1);//flase
  20.  
    //判断集合是否为空
  21.  
    boolean b2=list.isEmpty();
  22.  
    System.out.println(b2);//flase
  23.  
     
  24.  
    //清除所有元素
  25.  
    list.clear();
  26.  
     
  27.  
    boolean b3=list.isEmpty();
  28.  
    System.out.println(b3);//true
学新通

  2.2  方法拓展:

  get(int index) ;

  作用: 拿到集合中的对应下标的元素。

TocharAraary()或者TostringArrary():

作用:把集合中的元素转为char数组或者string数组

案例分析:

定义一个String类型的List集合,统计该集合中每个字符 (注意,不是字符串)出现的次数。
例如:集合中有”abc”、”bcd”两个元素, 程序最终输出结果为:“a = 1,b = 2,c = 2,d = 1”
  1.  
    import java.util.ArrayList;
  2.  
    public class Excel3 {
  3.  
    public static void main(String[] args) {
  4.  
    ArrayList<String> strings = new ArrayList<>();
  5.  
    strings.add("adc");
  6.  
    strings.add("bcc");
  7.  
    int count[]=new int[3];//计数器
  8.  
     
  9.  
    //把集合中的元素转为char数组
  10.  
    for(int i=0;i<strings.size();i ){
  11.  
    char[] str1=strings.get(i).toCharArray();
  12.  
    //把统计char数组中元素
  13.  
    for(char ch:str1){
  14.  
    System.out.println(ch " ");
  15.  
    if('a'==ch){
  16.  
    count[0] ;
  17.  
    }else if('b'==ch){
  18.  
    count[1] ;
  19.  
    }else if('c'==ch){
  20.  
    count[2] ;
  21.  
    }
  22.  
    }
  23.  
    System.out.println("a的元素个数=" count[0]);
  24.  
    System.out.println("b的元素个数=" count[1]);
  25.  
    System.out.println("c的元素个数=" count[2]);
  26.  
     
  27.  
    }
学新通

三.迭代器 

  3.1  迭代器简介:

  • 迭代是Collection集合元素遍历的一种方式。在取元素之前先判断集合中是否有元素,如果有,就把这个元素取出来。继续判断,如果有继续获取元素,直到集合中所有元素全部取出。这种取出方式专业术语称为迭代
  • 迭代器其实就是一个实现类的实例化对象,在ArrayList集合的Iterator方法中,是通过返回Itr对象来获得迭代器的。ItrArrayList的一个内部类,它实现了Iterator接口
  • 在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator ,iterator称之为迭代器

  3.2迭代器的使用 :

第一步:获取迭代器

Iterator iterator1= 集合.iterator();

第二步:使用迭代器的三个方法,对元素进行操作。

迭代器中三个方法:

boolean hasNext():  判断是否有下一个元素
E next():   返回下一个元素
void remove():   删除下一个元素

使用实例:

  1.  
    //定义一个迭代器。输出集合中的元素
  2.  
    Iterator iterator = arrayList.iterator();//获取迭代器
  3.  
    while (iterator.hasNext()){//判断下一个是否有元素
  4.  
    Object s=iterator.next();//下一个元素
  5.  
    System.out.println(s);
  6.  
    }

注意点:

  1. 在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出java.util.NoSuchElementException没有集合元素异常。

  2. 在进行集合元素获取时,如果添加或移除集合中的元素 , 将无法继续迭代 , 将会抛出ConcurrentModificationException并发修改异常.

  3. 如果一定要删除某个元素,使用迭代器自己的remove方法。

    1.  
      Iterator iterator =list.iterator();
    2.  
       
    3.  
      while(iterator.hasNext()){
    4.  
      System.out.println("长度为" list.size());
    5.  
      // list.add("集合2");//在集合移除或者添加过程中,迭代获取元素会报错。
    6.  
      // list.remove("20");
    7.  
      String name=iterator.next().toString();
    8.  
      if("20".equals(name)){
    9.  
      iterator.remove();
    10.  
      }else{
    11.  
      System.out.println(name);
    12.  
      }

      3.3.  迭代器实现原理:

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

在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,调用next方法之前,会调用hasnext()方法判断下一个元素,如果为ture则调用next方法。

当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法之前,会再次调用hasnext()方法判断下一个元素,如果为ture则调用next方法。迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。

四.增强for循环

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

  1.  
    for(变量类型 变量 :数组/集合){
  2.  
    处理遍历的数据,数据就保存在这个变量上面
  3.  
    }

注意点:因为foreach底层采用了迭代器,因此遍历集合时不要对集合元素进行增删操作。  

案例

已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位
String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}。
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来
  1.  
    import java.util.ArrayList;
  2.  
    import java.util.Iterator;
  3.  
     
  4.  
    public class Excel2 {
  5.  
    public static void main(String[] args) {
  6.  
    String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"};
  7.  
    //定义一个集合
  8.  
    ArrayList arrayList = new ArrayList();
  9.  
    //将数组中的元素放到集合中
  10.  
    for(int i=0;i<strs.length;i ){
  11.  
    arrayList.add(strs[i]);
  12.  
    }
  13.  
    //将list中的重复元素删除
  14.  
    for(int i=0;i<arrayList.size();i ){
  15.  
    Object a1=arrayList.get(i);//拿到集合中的元素
  16.  
    for(int j=i 1;j<arrayList.size();j ){
  17.  
    Object j1 = arrayList.get(j);
  18.  
     
  19.  
    // if(arrayList.contains(a1)){
  20.  
    if(j1==a1){
  21.  
    arrayList.remove(a1);
  22.  
    i=i-1;
  23.  
    }
  24.  
     
  25.  
    }
  26.  
    // }
  27.  
    }
  28.  
    //增强for循环:
  29.  
    for(Object a:arrayList){
  30.  
    System.out.println(a);
  31.  
    }
  32.  
     
  33.  
    }
  34.  
    }
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgccaee
系列文章
更多 icon
同类精品
更多 icon
继续加载