前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java(集合②)

Java(集合②)

作者头像
全栈开发日记
发布2022-05-12 20:23:56
3460
发布2022-05-12 20:23:56
举报
文章被收录于专栏:全栈开发日记

迭(dié)代器

Java.util.Iterator接口:迭代器(对集合进行遍历)

迭代器常用方法

代码语言:javascript
复制
boolean hasNext():检测集合是否还有下一个元素,返回boolea值;
E next():返回迭代的下一个元素

Iterator迭代器是一个接口,我们无法直接使用,需要使用Iterator接口接口的实现类对象,获取方式比较特殊;

Collection接口中的一个方法iterator():这个方法返回的就是迭代器实现类对象;

代码语言:javascript
复制
Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器

迭代器的使用步骤:

1、使用集合中的方法iterator()获取迭代器实现类对象,使用Iterator接口接收;

2、使用Iterator接口中的方法hasNext()判断还有没有下一个元素;

3、使用Iterator接口中的方法next方法去除集合中的下一个元素;

代码语言:javascript
复制
Collection<String> coll=new ArrayList<>();
coll.add("a");//添加给定的元素
coll.add("b");
coll.add("c");
Iterator<String> iterator = coll.iterator();
boolean b3 = iterator.hasNext();//判断集合中是否还有下一个值
System.out.println(b3);//true
String next = iterator.next();//返回集合的下一个值
System.out.println(next);//a

增强for循环:

底层使用的就是迭代器,使用for循环的格式,简化了迭代器的书写;

是jdk1.5之后出现的新特性;

作用:用来遍历集合/数组;

格式:

代码语言:javascript
复制
for(集合/数组的数据类型 变量名:集合名/数组名){
}

代码:

代码语言:javascript
复制
for (Object a:arrayList){
    System.out.println(a);
}

泛型:

是一个未知的数据类型,当我们不确定什么数据类型的时候,就可以使用泛型;

好处:

1、避免了类型转换的麻烦,存储的是什么类型。取出的就是什么类型;

2、把运行期异常,提升到了编译期;

弊端:

泛型是什么类型,只能存储什么类型;

1、含有泛型的类

代码语言:javascript
复制
public class Person<E>{
    private E name;
    public E getName(){}
    public void setName(E name){}
}

2、含有泛型的方法

格式:

代码语言:javascript
复制
修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){}

代码:

代码语言:javascript
复制
public <M> void med(M s){
    System.out.println(s);
}
public static <M> void med(M s){
    System.out.println(s);
}

3、含有泛型的接口

接口类:

代码语言:javascript
复制
public interface Inter<I> {
    public abstract void med(I i);
}

实现类:

代码语言:javascript
复制
public class InterfaceImpl<I> implements Inter<I>{
    @Override
    public void med(I s){
        System.out.println(s);
    }
}

泛型的通配符:

?:代表的就是数据类型

使用方式:

不能创建对象使用;

只能作为方法的参数使用;

泛型的上限限定:

? extends E 代表的使用泛型只能是E类型的子类/本身;

泛型的下线限定:

? super E 代表的是泛型只能是E类型的父类/本身;

代码:

代码语言:javascript
复制
public static void main(String[] args) {
        Collection<Integer> list1=new ArrayList<>();
        Collection<String> list2=new ArrayList<>();
        Collection<Number> list3=new ArrayList<>();
        Collection<Object> list4=new ArrayList<>();

        getE1(list1);
        getE1(list2);//报错
        getE1(list3);
        getE1(list4);//报错

        getE2(list1);//报错
        getE2(list2);//报错
        getE2(list3);
        getE2(list4);
}
//上限限定  ? extends E 代表的使用泛型只能是E类型的子类/本身
public static void getE1(Collection<? extends Number> coll){}
//下限限定  ? super E   代表的事泛型只能是E类型的父类/本身
public static void getE2(Collection<? super Number> coll){}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档