集合框架,接口,接口实现类,集合的三种便利遍历方法


为什么使用集合框架
存储一个班学员信息,假如一个班容纳20名学员,可以用对象数组存储,如果对象数目不确定,用数组储存就有问题。
如果并不知道程序运行时需要多少对象,或者需要更复杂方式存储对象可以使用Java集合框架。

Java集合框架包含的内容

位于:java.util包中

接口

在这里插入图片描述

Collection接口:

在这里插入图片描述
Collection接口存储一组不唯一、无序的对象
List接口存储一组不唯一、有序(插入顺序)的对象,类似数组
Set接口存储一组唯一、无序的对象

map接口

Map接口存储一组键值对象,提供key到value的映射

List接口的实现类

特点:有序可重复

ArrayList类

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高

add(Object object)添加元素
remove(int index)删除元素
set(int index ,Object object)修改元素
get(int index)获取元素
size()集合大小
contains(Object object)判断元素是否包含
toArray()转换成数组
clear()清空集合
在这里插入图片描述

LinkedList实现类

LinkedList采用链表存储结构,插入、删除元素时效率比较高
LinkedList的常用方法与ArrayList的基本一致。
在这里插入图片描述
实例:

//List接口 ArrayList 实现类
//数组结构  有序   可以重复 长度可变

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ArrayListDome {

	public static void main(String[] args) {
          List ls= new ArrayList();
         Dog  d1=new Dog("阿伟", "金毛");
         Dog  d2=new Dog("小杨", "泰迪");
         Dog  d3=new Dog("阿翔", "金毛");
         Dog  d4=new Dog("阿毛", "金毛");
         Penguin p1=new Penguin("小黑", "Q仔");
         //添加
         ls.add(d1);
         ls.add(d2);
         ls.add(d3);
//         ls.add(p1);
         System.out.println("元素个数:"+ls.size());
         
      
         //删除
                     //     ls.remove(2);
         //清空
                    //      ls.clear();
         //修改
         ls.set(1, d4);

        //判断是否存在 
         if (ls.contains(d1)) {
			System.out.println("存在");
		}else {
			System.out.println("不存在");
		}
         
         //遍历元素1
         for (int i = 0; i < ls.size(); i++) {
        	 //判断是那种类型
        	 if (ls.get(i) instanceof Dog) {
        		 Dog dog =(Dog) ls.get(i);	
            	 dog.show();
			}else if(ls.get(i) instanceof Penguin){
				Penguin pe=(Penguin)ls.get(i);
				pe.show();
			}
}

运行结果:
在这里插入图片描述

集合的遍历方法

  1. Foreach循环(增强for循环)
//增强foreach(推荐)
         System.out.println("*******增强foreach ********");
        for (Object object : ls ) {
			if (object instanceof Dog) {
				Dog dog =(Dog)object;	
           	 dog.show();
			}else if (object instanceof Penguin) {
				Penguin pe=(Penguin)object;
				pe.show();
			}
		}
  1. ArrayList转换成数组(使用toArray ()方法)
  //转换成数组 
        System.out.println("*******转换成数组 ********");
        Object[] obj=ls.toArray();
        for (int i = 0; i < obj.length; i++) {
        	if (obj[i] instanceof Dog) {
				Dog dog =(Dog)obj[i];	
           	 dog.show();
			}else if (obj[i] instanceof Penguin) {
				Penguin pe=(Penguin)obj[i];
				pe.show();
			}
		}
  1. 与迭代器遍历数组(数组中的类型要一致)
      //迭代器
        System.out.println("*******迭代器********");
        Iterator it=ls.iterator();
        while (it.hasNext()) {
			Dog dog=(Dog)it.next();
			dog.show();
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值