吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2755|回复: 8
收起左侧

[Java 转载] Java(集合②)

[复制链接]
二饭 发表于 2020-2-17 21:45
本帖最后由 二饭 于 2020-2-17 22:08 编辑

​

​迭(dié)代器

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

迭代器常用方法

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

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

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

Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器

迭代器的使用步骤:
1、使用集合中的方法iterator()获取迭代器实现类对象,使用Iterator接口接收;
2、使用Iterator接口中的方法hasNext()判断还有没有下一个元素;
3、使用Iterator接口中的方法next方法去除集合中的下一个元素;

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之后出现的新特性;

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

格式:

for(集合/数组的数据类型 变量名:集合名/数组名){
}

代码:

for (Object a:arrayList){
    System.out.println(a);
}

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

好处:
1、避免了类型转换的麻烦,存储的是什么类型。取出的就是什么类型;
2、把运行期异常,提升到了编译期;

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

1、含有泛型的类

public class Person<E>{
    private E name;
    public E getName(){}
    public void setName(E name){}
}

2、含有泛型的方法

格式:

修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){}

代码:

public <M> void med(M s){
    System.out.println(s);
}
public static <M> void med(M s){
    System.out.println(s);
}

3、含有泛型的接口

接口类:

public interface Inter<I> {
    public abstract void med(I i);
}

实现类:

public class InterfaceImpl<I> implements Inter<I>{
    @Override
    public void med(I s){
        System.out.println(s);
    }
}

泛型的通配符:
?:代表的就是数据类型

使用方式:
不能创建对象使用;
只能作为方法的参数使用;

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

泛型的下线限定:
? super E   代表的是泛型只能是E类型的父类/本身;

代码:

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){}


纯手打,大家觉得有用给个回复~

免费评分

参与人数 3吾爱币 +6 热心值 +2 收起 理由
linux-user + 1 可以不错
wapj130841 + 1 我很赞同!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 二饭 发表于 2020-2-17 22:07
纯手打,大家觉得有用给个回复~
聊胜于无丶 发表于 2020-2-17 22:21
结合设计模式中的迭代器模式,和泛型对框架结构中(父子类方面)的好处分析下
 楼主| 二饭 发表于 2020-2-18 09:18
聊胜于无丶 发表于 2020-2-17 22:21
结合设计模式中的迭代器模式,和泛型对框架结构中(父子类方面)的好处分析下

好的,下次我整理一下
archted 发表于 2020-7-23 23:11
粗略看了一下 赞一个
剑神叶玄 发表于 2020-11-13 18:02
感谢楼主
Safety010 发表于 2020-11-20 07:48
挺不错的
hellopsm 发表于 2021-2-17 09:28
感谢大佬分享
静雅 发表于 2021-2-17 10:12
针不戳!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表