博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合和Iterator迭代器
阅读量:5096 次
发布时间:2019-06-13

本文共 6479 字,大约阅读时间需要 21 分钟。

集合

集合是java中提供的一种容器,可以用来存储多个数据。

注意:

①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,

  其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。

②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。

③、集合可以存放不同类型,不限数量的数据类型。

 

 用ArrayList集合存储int类型数组:

1 public static void main(String[] args) { 2          3         ArrayList
arr=new ArrayList
(); 4 arr.add(1); 5 arr.add(12); 6 arr.add(2); 7 for(int i=0;i

ArrayList集合存储5个Person类型元素:

1     ArrayList
arr=new ArrayList
();2 arr.add(new Person("小猪佩奇",18));3 arr.add(new Person("乔治",17));4 arr.add(new Person("熊大",16));5 arr.add(new Person("熊二",15));6 for(int i=0;i

集合的继承实现关系

查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。

Collection接口为最顶层集合接口了。

 

Collection接口概述:

Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用,不过Collection接口定义了一些通用的方法,

通过这些方法可以实现对集合的基本操作,因为List接口和Set接口继承自Collection接口,

所以这些方法对List集合和Set集合是通用的。

Collection接口的基本方法:

创建集合的格式:

1 方式1:Collection
<元素类型>
变量名 = new ArrayList
<元素类型>
();2 方式2:Collection 变量名 = new ArrayList();

方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式

方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。

代码展示:

1 public static void main(String[] args) { 2         Collection
con=new ArrayList
(); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 boolean flag=con.contains("巴啦啦大魔仙"); 9 System.out.println(flag);10 con.remove("变身");11 //con.clear();12 con.toArray();13 for(int i=0;i
arr=(ArrayList
)con;15 System.out.println(arr.get(i));16 }17 }

 

Iterator迭代器

一、Iterator迭代器概述

java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。

Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,

如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。

 Iterator接口的常用方法:

代码展示:

1     public static void main(String[] args) { 2         ArrayList
arr=new ArrayList
(); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //1.获取Iterator对象 7 //Iterator
it=arr.iterator(); 8 //while循环取出元素 9 /*while(it.hasNext()){10 System.out.println(it.next());11 }*/12 //for循环迭代13 for(Iterator
it=arr.iterator();it.hasNext();){14 System.out.println(it.next());15 }16 /*//2.判断集合下一位是否有元素17 boolean flag=it.hasNext();18 System.out.println(flag);19 //3.获取元素20 System.out.println(it.next());*/21 22 }

图解:

Iterator迭代方式的代码体现:

1 //1,创建集合对象。 2 Collection
coll = new ArrayList
(); 3 coll.add("abc1"); 4 coll.add("abc2"); 5 coll.add("abc3"); 6 coll.add("abc4"); 7 8 //2.获取容器的迭代器对象。通过iterator方法。 9 Iterator it = coll.iterator();10 11 //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法12 while(it.hasNext()){13 System.out.println(it.next());14 }15 16 /*17 迭代器for循环的形式的使用18 for (Iterator it = coll.iterator(); it.hasNext(); ) {19 System.out.println(it.next());20 }

集合元素的向下转型

1 public static void main(String[] args) { 2         Collection
con=new ArrayList
(); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 Iterator
it=con.iterator(); 9 while(it.hasNext()){10 Object obj=it.next();11 String str=(String)obj;//如果不加泛型 需要向下转型12 System.out.println(str.length());13 }14 }

增强for循环

格式:

for(元素的数据类型 变量 : Collection集合or数组){}

1 public static void main(String[] args) { 2         ArrayList
arr=new ArrayList
(); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //普通for 7 for(int i=0;i

练习:

定义方法frequency统计集合中指定元素出现的次数,如"a" 3,"b" 2,"c" 1

import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class text {    public static void main(String[] args) {        List
list = new ArrayList
(); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); list.add("d"); System.out.println(frequency(list, "a")); System.out.println(frequency(list, "b")); System.out.println(frequency(list, "c")); System.out.println(frequency(list, "d")); System.out.println(frequency(list, "xxx")); } public static int frequency(List
arr,String a){ int num=0; Iterator
it=arr.iterator(); while(it.hasNext()){ if(it.next()==a){ num+=1; } } return num; }}

 

2.某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性(String)、班级名称属性(String)和考试成绩属性(double) 

某次考试结束后,每个学生都获得了一个考试成绩。遍历list集合,并把学生对象的属性打印出来。

public class person {    private String name;    private String class_name;    private double score;    public person(String name, String class_name, double score) {        super();        this.name = name;        this.class_name = class_name;        this.score = score;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getClass_name() {        return class_name;    }    public void setClass_name(String class_name) {        this.class_name = class_name;    }    public double getScore() {        return score;    }    public void setScore(double score) {        this.score = score;    }    //重写toString    public String toString() {        return "姓名:" + name + "\t班级:" + class_name + "\t成绩:" + score;    }    }
import java.util.ArrayList;public class student {    public static void main(String[] args) {        person p1=new person("劳拉","java01",100);        person p2=new person("萨曼莎","java02",90);        person p3=new person("约拿","java03",80);        ArrayList
stu=new ArrayList
(); stu.add(p1); stu.add(p2); stu.add(p3); //循环打印 for(person i:stu){ System.out.println(i); } }}

转载于:https://www.cnblogs.com/Ace-suiyuan008/p/9415112.html

你可能感兴趣的文章
Win7 一键获得管理所有权限(最高权限)注册表
查看>>
清空Cookie
查看>>
电脑打开任务管理器出现卡顿
查看>>
[UE4]让箭头保持水平
查看>>
软件测试用例规范
查看>>
Mac常用软件推荐
查看>>
用keytool制作多域名证书
查看>>
MySQL-二进制日志
查看>>
dede修改templets模板文件夹后,出现“无法在这个位置找到: ”错误的解决办法...
查看>>
手脱PEtite v2.1
查看>>
软件工程通用软件体系结构主机终端模式、B/S 、C/S 结构和多层分布式结构
查看>>
毕业设计5:基于MicroPython的智能火灾报警器系统的设计与实现
查看>>
mysql优化之参数优化
查看>>
【PHP】关于系统性能追踪工具molten
查看>>
异步加载JS 的方案
查看>>
8.7 正睿暑期集训营 Day4
查看>>
隐式加载动态链接库注意事项
查看>>
Shell脚本之:while
查看>>
NET设计模式6--适配器模式(Adapter Pattern)
查看>>
ARC快速入门
查看>>