Java 集合框架 01 集合、Iterator迭代器、增强for循环、泛型

1 集合

1.1 介绍

集合,是Java中提供的一种容器,可以用来存储多个数据。

集合与数组的区别:

  • 数组的长度是固定的,集合的长度是可变的。
  • 集合中存储的元素必须是引用类型数据。
1.2 集合的继承实现关系

这里写图片描述

1.3 Collection 接口中常用方法
boolean add(E e)
void clear()    // 清空集合中元素
boolean contains(Object o)
boolean remove(Object o) // 移除集合中遇到的第一个指定的元素
int size()
Object[] toArray() // 集合转数组

Java中三种长度表现形式

  • 数组.length
  • 字符串.length()
  • 集合.size()

2 迭代器

2.1 介绍

Java中有很多个集合,它们存储元素的存储方式不尽相同,而取出这些元素可以通过一种通用的方式来完成。

Collection集合元素的通用获取方式:在获取元素之前先判断集合中有没有元素,若有,就把它取出来,继续判断,若有,就再取出,一直把集合中的所有元素取出为止。这种取出方式就称为迭代

2.2 Iterator接口中常用方法
boolean hasNext()   // 若有元素可以迭代,返回true
E next()    // 返回迭代的下一个元素
void remove()   // 移除最后一个元素

示例:集合迭代

Collection<String> collection = new ArrayList<String>();

collection.add("abc1");
collection.add("abc2");
collection.add("abc3");
collection.add("abc4");

// 迭代器,对集合ArrayList中的元素进行取出

// 调用集合的方法iterator()获取出,iterator接口的实现类对象
Iterator<String> iterator = collection.iterator();
// 迭代是反复内容,使用循环实现。循环条件,hasNext()
while(iterator.hasNext()) {
    String string2=iterator.next();
    System.out.println(string2);
}

示例:集合迭代中的转型

// 集合可以存储任意类型的对象
// 集合中,不指定存储的数据类型,集合什么都存
Collection collection = new ArrayList();
collection.add("abc");
collection.add("343435");

// 迭代器获取
Iterator iterator =collection.iterator();
while (iterator.hasNext()) {
    // iterator.next()获取出来的是Object类型
    Object object=iterator.next();
    System.out.println(object);
    // 当需要使用子类对象的特有方法,需要向下转型
    String string=(String)object;
    System.out.println(string.length());
}

3 增强for循环

好处:代码少,方便对容器遍历
缺点:没有索引,不能对容器里的元素进行操作

int[] arr= {1,2,4,5,6,7,8};
for (int i : arr) {
    System.out.print(i+" ");
    System.out.print(i+1+" ");
    System.out.println();
}
for (int i : arr) {
    System.out.println(i);
}

4 泛型

由于在集合中什么类型的数据都可以存储,就导致取出时可能因为强转引发异常。而解决这个问题,就需要明确集合中元素的类型。这种方式称为泛型

1)泛型的通配符

/*
 *  定义方法,可以同时迭代两个集合
 *  参数:共同实现的接口
 */
public static void myIterator(Collection<?> coll){
    Iterator<?> iterator=coll.iterator();
    while (iterator.hasNext()) {
        Object object = (Object) iterator.next();
        System.out.println(object);
    }
}

public static void main(String[] args) {

    ArrayList<String> arrayList=new ArrayList<String>();     
    HashSet<Integer> set=new HashSet<Integer>();

    arrayList.add("124");
    arrayList.add("789");

    set.add(789);
    set.add(340);

    myIterator(set);
    myIterator(arrayList);
}

猜你喜欢

转载自blog.csdn.net/lihaogn/article/details/81043510