Java自学笔记之Collection集合、集合的遍历与迭代器

集合的由来

数组长度是固定的,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,Java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少。

集合类的特点
  • 集合只能存储对象。JDK 1.5之后可以存基本数据类型,自动装箱为基本类型包装类。
  • 集合的长度是可变的。
  • 集合可以存储不同类型的对象。
数组和集合的区别
  1. 存储:
    数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值。
    集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象。
  2. 长度:
    数组长度是固定的,不能自动增长。
    集合的长度是可变的,可以根据元素的增长而增长。
数组和集合什么时候用
  1. 如果元素个数是固定的推荐使用数据。
  2. 若元素个数不是固定的推荐使用集合。
集合继承体系图

java中集合类的关系

Collection集合的基本功能
  1. 添加:
    boolean add(E e) :添加元素。
    boolean addAll :将集合c中的所有元素添加到当前集合。
  2. 删除:
    void clear() :清空容器。
    boolean remove(Object obj) :移除一个元素。
    boolean removeAll(Collection c) :移除与c相同的元素。
    boolean retainAll(Collection c) :保留与c相同的元素。
  3. 判断:
    boolean contains(Object obj) :判断是否包含此元素。
    boolean containsAll(Collection collection) :判断是否包含一堆元素。
    boolean equals(Object obj) :比较此Collection与指定对象是否相等。
    boolean isEmpty() :判断集合是否为空。
  4. 获取:
    Iterator iterator() :取出。
    int hashCode() :返回此 collection 的哈希值。
    int size() :返回此 collection 中元素的个数。
    boolean retainAll(Collection c) :取交集。
    Object toArray() :返回此 collection 中所有元素的数组。
    T[] toArray(T[] a) :返回包含此 collection 中所有元素的数值。
集合的遍历之集合转数组遍历

先创建实体类

class People {
	private String name;
	private int age;
	public People() {
	} 
	public People(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	} 
	//get set方法
	.....
}

主函数

package com.whoami.collection

import java.util.ArrayList;
import java.util.Collection;

import com.whoami.entity.People;
/**
* toArray()遍历集合
* @author whoami_zq
*/
public class TestCollection {
	public static void main(String[] args) {
		Collection<People> collection = new ArrayList<>();
		collection.add(new People("张三", 23));
		collection.add(new People("李四", 24));
		collection.add(new People("王五", 25));
		collection.add(new People("赵六", 26));
		Object[] arr = collection.toArray(); // 将集合转换成数组
		for (int i = 0; i < arr.length; i++) {
			People p = (People) arr[i]; // 强转成 People
			System.out.println(p.getName() + "," +p.getAge());
		}
	}
}
集合的遍历之迭代器遍历(集合的专用遍历方式)
//先创建实体类
class People{
	// 实体类同上
	......
}

主函数

package com.whoami.iterator;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import com.whoami.entity.People;
/**
* Iterator 遍历集合
* @author whoami_zq
*/
public class TestIterator {
	public static void main(String[] args) {
		Collection<People> collection = new ArrayList<People>();
		collection.add(new People("张三", 23));
		collection.add(new People("李四", 24));
		collection.add(new People("王五", 25));
		collection.add(new People("赵六", 26));
		System.out.println("------------第一种使用方式--------------");
		Iterator<People> it = collection.iterator(); // 获取迭代器
		while (it.hasNext()) { // 判断集合中是否有元素
			People p = (People) it.next(); // 向下转型
			// 获取对象中的姓名和年龄
			System.out.println(p.getName() + "," +p.getAge()); 
		} 
		System.out.println("------------第二种使用方式---------------");
		for (Iterator<People> it2 = collection.iterator(); it2.hasNext();) {
			People p2 = (People) it2.next(); // 向下转型
			System.out.println(p2.getName() + "," +p2.getAge()); 
		}
	}
}
迭代器
  1. 迭代器就是取出集合元素的方式
  2. 迭代器的作用
    因为每个集合中元素的取出方式都不一样,于是就把元素的取出方式进行抽取,并定义在集合内部,这样取出方式就可以直接访问集合内部的元素;
    而每个容器的数据结构不同,所以取出动作的细节也不一样,但是有共性内容:判断和取出。
    那么就将共性内容进行抽取,从而形成了接口 Iterater。
  3. 获取迭代器的方法:
    Iterator<E> iterator() :返回在此 collection 的元素上进行迭代的迭代器。
    Iterator<E> iterator() :返回在此 set 中的元素上进行迭代的迭代器。
  4. 迭代器方法:
    boolean hasNext() :如果仍有元素可以迭代,则返回 true。
    E next() :返回迭代的下一个元素。
    void remove() :从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

希望能帮助到有需要的人。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whoami_ZQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值