java集合:集合与数组的比较,集合的分类,Collection接口

package com.qianfeng.test;

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

/*

  • 集合:
  • 比较集合和数组
  • 数组:可以存储多个相同类型的数据,数据类型可以是简单数据类型也可以是引用数据类型。
  •  缺点:创建的是一个定值,只能存储固定长度的数据,一旦存满了,就不能再继续存储。
    
  • 集合:可以存储多个相同或者不同的数据,但是只能存储引用数据类型。
  •  优点:存储空间会随着存储数据的多少而改变,所以可以更加合理利用内存空间,方法更多,更加方便我们实现功能。
    
  •  缺点:不能存储简单数据类型。
    
  • 这里写图片描述
  • 这里写图片描述
    */
    在这里插入图片描述

这里写图片描述

public class Demo6 {

public static void main(String[] args) {
	
	//Collection中定义是整个集合体系最共性的方法:
	Collection collection1 = new ArrayList<>();
	
	//1.添加:
	//boolean add(Object o) 一次添加一个元素
	collection1.add("java");
	collection1.add("html");
	collection1.add("python");
	System.out.println(collection1);
	//boolean addAll(Collection<? extends E> c) 一次添加多个元素
	Collection collection2 = new ArrayList<>();
	collection2.add("iOS");
	collection2.add("BigData");
	collection1.addAll(collection2);
	System.out.println(collection1);
	
	//2.删除:
    //boolean remove(Object o)  
	System.out.println(collection1.remove("java"));
	System.out.println("iOS");
	System.out.println(collection1);
    //boolean removeAll(Collection<?> c)  删除一批元素,但是collection1中不一定包含collection2中的所有内容,有谁删谁。
	collection1.removeAll(collection2);
	System.out.println(collection1);
    //void clear()  --变成空集合 !=null
	collection1.clear();
	System.out.println(collection1);
	
	//3.判断:
	//boolean contains(Object o) 
	System.out.println(collection1.contains("java"));//false
	//boolean containsAll(Collection<?> c)
	//boolean isEmpty() //判断集合是否为空 !=null
	System.out.println(collection1.isEmpty());//true
	//boolean equals(Object o) 
	System.out.println(collection1.equals(collection2));//false
	
	//4.获取:
	//Iterator<E> iterator() //获取集合中的对象
	test(collection1);
	//int size() //获取集合中对象的个数
	System.out.println(collection1.size());
	
	//5.集合变数组:当我们希望集合的长度固定下来的时候,使用这个方法
	//Object[] toArray()
	Object[] objects = collection1.toArray();
	for (Object object : objects) {
		System.out.println("object:"+object);
	}
}

public static void test(Collection collection){
	//4.获取: --迭代器
	//Iterator<E> iterator() //获取集合中的对象
	/*
	 * boolean hasnext():判断当前的位置是否存在元素,存在返回true
	 * Object next():将当前位置的元素返回,并且将指针指向当前位置的指针指向下一个元素
	 */
	//获取迭代器对象
	Iterator iterator = collection.iterator();
	//开始调用方法遍历
	while(iterator.hasNext()){
		Object object = (Object) iterator.next();
		System.out.println("String:"+object);
	}
	
	//注意点:
	//直接再次使用第一次的iterator进行遍历,遍历失败,因为当前的指针已经指向了集合的最后,
	//再次使用hasNext(),会直接返回false,所以如果想再次重新遍历,就要重新获取迭代器对象。
	while(iterator.hasNext()){
		Object object = (Object) iterator.next();
		System.out.println("String1:"+object);
	}
	
	//2.集合中可以同时存储不同类型的数据
	collection.add(2);
	System.out.println(collection);
	
	//3.当集合中存在不同的数据类型时,需要进行容错处理和向下转型。
	Iterator iterator1 = collection.iterator();
	while(iterator1.hasNext()){
		Object object = (Object) iterator1.next();
		System.out.println("String2:"+object);
		
		//容错处理
		if (!(object instanceof String)) {
			throw new ClassCastException("类型转换异常");
		}
		
		//向下转型
		String string = (String)object;
		System.out.println(string.length());
	}
	
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值