Java集合遍历实现方法及泛型通配
作者:haoduohaoduo鱼 发布时间:2022-02-26 13:55:54
标签:Java,集合,遍历,泛型,通配
集合定义
集合,集合是java中提供的一种容器,可以用来存储多个数据。
特点:数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据‘
普通for遍历:
//案例一
ArrayList<Person> arr=new ArrayList<Person>();
arr.add(new Person("张三",19));
arr.add(new Person("小红帽",20));
arr.add(new Person("小红帽",23));
for(int i=0;i<arr.size();i++){
System.out.println(arr.get(i));
}
增强for循环遍历:
案例二
Collection<Integer> arr=new ArrayList<Integer>();
arr.add(789);
arr.add(456);
arr.add(123);
//增强for循环
/*for(元素的数据类型 变量 : Collection集合or数组){
}*/
for(Integer i:arr){
System.out.println(i);
}
迭代器遍历:
//案例三
//1,创建集合对象。
Collection<String> coll = new ArrayList<String>();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
//2.获取容器的迭代器对象。通过iterator方法。
Iterator it = coll.iterator();
//3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
while(it.hasNext()){
System.out.println(it.next());
}
Collection接口的基本方法
Collection接口是集合中的顶层接口,那么它中定义的所有功能子类都可以使用
创建集合的格式:
方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();
方式2:Collection 变量名 = new ArrayList();
集合元素的向下转型
Collection coll = new ArrayList();
coll.add("abc");
coll.add("aabbcc");
coll.add(1);
Iterator it = coll.iterator();
while (it.hasNext()) {
//由于元素被存放进集合后全部被提升为Object类型
//当需要使用子类对象特有方法时,需要向下转型
String str = (String) it.next();
System.out.println(str.length());
}
泛型和通配符
类定义格式:修饰符 class 类名<代表泛型的变量> { }
接口定义格式:修饰符 interface接口名<代表泛型的变量> { }
限定泛型的下限:
//? extends Person 限定泛型的上限
//? super Person 限定泛型的下限
public static void get(Collection<? extends Person> c){
Iterator<?> it=c.iterator();
while(it.hasNext()){
//向下转型
Object obj=it.next();
Person p=(Person)obj;
System.out.println(p.getName());
}
来源:https://www.cnblogs.com/haoduoyu0512/p/13297885.html


猜你喜欢
- 前言:IO流主要分为两大类,分别是字节流与字符流注意:1、音频文件、图片、视频(范围广),就用字节流2、只涉及到文本的,就用字符流使用字节流
- Spring框架基于注解开发CRUD,供大家参考,具体内容如下1. Maven坐标<!-- https://mvnrepository
- 本文实现了一个有趣的小东西:使用自定义View绘图,一边画线,画出的线条渐渐变淡,直到消失。效果如下图所示:用属性动画或者渐变填充(Shad
- 一、基本使用它们是 LockSupport 类中的方法// 暂停当前线程LockSupport.park(); // 恢复某个线程的运行Lo
- 本文实例讲述了Android编程使用android-support-design实现MD风格对话框功能。分享给大家供大家参考,具体如下:首先
- 几点重要的用法:a 先来介绍几个方法TimeSpan.Minutes(其他时间比如天数,小时数,秒数都一样的情况下得到的分钟数的差),其他的
- 为什么要限流在保证可用的情况下尽可能多增加进入的人数,其余的人在排队等待,或者返回友好提示,保证里面的进行系统的用户可以正常使用,防止系统雪
- 一、创建数据库 1、新建数据库帮助类 包名——右击—&am
- 具体代码如下所示:private string GetWeekName(DayOfWeek week) { &nb
- C#是一门支持多线程的语言,因此线程的使用也是比较常见的。由于线程的知识在Win32编程的时候已经说得过多,所以在.Net中很少介绍这部分(
- 一 ,定义接口和抽象类interface IPerson{ //获取名字 fun getName():String //获取身份证ID fu
- 目录一、Collections.sort的简单使用二、问题提出三、Comparable实现排序四、Comparator实现排序五、Compa
- C#的特性record 类型、模式匹配、init 属性一、record 类型record ,我还是用原词吧,我知道有翻译为“记录类型”的说法
- 引言在性能测试过程中,验证HTTP code和响应业务code码是比较基础的,但是在一些业务中,这些参数并不能保证接口正常响应了,很可能返回
- 基本框架<?xml version="1.0" encoding="utf-8"?>&l
- 本文实例讲述了Android编程重写ViewGroup实现卡片布局的方法。分享给大家供大家参考,具体如下:实现效果如图:实现思路1. 重写o
- 这是个我在C#调用批处理文件时遇到的问题。首先我通过Process.Start方法调用一个批处理文件,那个批处理文件里面则调用了一大堆程序。
- import java.util.Calendar;import java.util.Date;public class Matrix {&
- 目录int和Integer的区别及自动装箱和自动拆箱Integer和int的对比,如下所示:自动装箱和自动拆箱:Integer的自动拆装箱的
- 本文实例讲述了C#简单创建和删除目录的方法。分享给大家供大家参考。具体如下:using System;using System.IO;cla