从零开始学java - 第十八天

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

今天继续~

Iterator(迭代器)

  • 它是一种访问集合的方法,可用于迭代ArrayListHashSet等集合
  • 在使用迭代器的时候必须把它引入:
import java.util.Iterator;
复制代码

Iterator常用方法

  • next() - 返回迭代器的下一个元素并更新迭代器状态
  • hasNext() - 判断是否还有下一个元素
  • remove() - 删除迭代器返回的元素

获取一个迭代器

  • 可以使用iterator()方法
import java.util.ArrayList;
import java.util.Iterator;
public class Test{
    public static void main(String[] args){
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Hello");
        sites.add("World");
        
        Iterator<String> it = sites.iterator();
        
        System.out.println(it.next());
    }
}
复制代码

ps:使用iterator()将sites放入迭代器,然后通过迭代器方法next()来获取到ArrayList里面的值

循环输出元素

  • 最简单的方法是while循环:
import java.util.ArrayList;
import java.util.Iterator;
public class Test{
    public static void main(String[] args){
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Hello");
        sites.add("World");
        
        Iterator<String> it = sites.iterator();
        
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}
复制代码

ps:通过判断是否存在下一个元素来作为while循环的条件,当没有下一个值的时候停止循环

删除元素

  • 可以使用remove()方法
import java.util.ArrayList;
import java.util.Iterator;
public class Test{
    public static void main(String[] args){
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Hello");
        sites.add("World");
        
        Iterator<String> it = sites.iterator();
        
        while(it.hasNext()){
            it.remove();
        }
    }
}
复制代码

Object类

  • 它是所有类的父类,所有类都继承了Object

类的构造函数

  • 构造一个新对象

类的方法

clone() - 创建并返回一个对象的拷贝

equals(Object obj) - 比较两个对象是否相等

finalize() - 垃圾回收

getClass() - 获取对象运行时的类

hashCode() - 获取对象的哈希值

notify() - 唤醒在该对象上等待的某个线程

notifyAll() - 唤醒在该对象上等待的所有线程

toString() - 返回对象的字符串形式

wait(long timeout,int nanos) - 让当前线程进入等待状态(可设置超时时间)

ps:nanos为纳秒,范围是(0-999999)

泛型

  • 泛型提供了编译时类型安全检测机制,允许程序员在编译时检测到非法类型
  • 泛型的本质时参数化类型,数据类型被指定为一个参数
  • 它可以让多种类型的数据使用同一种方法来执行

泛型方法

  • 该方法在调用时可接收不同类型的参数,在执行的时候编译器会适当地处理每一个方法地调用

声明规则

  • 所有泛型方法都有一个类型参数声明(尖括号形式<E>),声明在返回类型之前
  • 可以有多个参数,参数之间用逗号隔开

泛型标记符

  • E - Element
  • T - Type
  • K - Key
  • V - Value
  • N - Number
  • ? - 不确定
public class Test{
    // 泛型方法
    public static <E> void Game(E[] play)
    {
        for(E element:play){
            System.out.printf( "%s ", element );
        }
        System.out.println();
    }
    
    public static void main(String args[])
    {
        Integer[] intArray = {1,2,3,4,5};
        Double[] doubleArray = {1.1,2.2,3.3,4.4};
        
        Game(intArray);
        Game(doubleArray);
    }
}
复制代码

今天就学到这里吧,晚安~

猜你喜欢

转载自juejin.im/post/7031854608917987358