Java集合

43 篇文章 0 订阅
25 篇文章 0 订阅

迭(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){}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值