07.集合和泛型

一.集合框架概述

Java集合框架都位于Java.util包中

Java集合框架可以包含三大块内容,对外接口,接口的实现,对集合运算的算法

Set、List和Map可以看做集合的三大类:

List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。

Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问。

Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。

接口

表示集合的抽象数据类型,例如Collection,List,Set,Map等

实现

集合框架中的接口具体实现,例如ArrayList,HashSet,HashMap等

算法

在实现了集合框架接口的对象身上完成计算的方法。Java提供了集合框架的工具类Collections,它实现了对集合排序的多种算法。

二.List接口

ArrayList对数组进行了封装,实现了可变长数组,采用和数组相同的储存方法。

LinkedList采用链表储存方式。

ArrayList

import Java.util.List;
import java.util.ArrayList;
puoblic class ListDemo{
	public static void main(String [] args){
        List list = new ArrayList();
		for(int i=0;i<3;i++){
			list.add("Hello");
		}
		String a = (String)list.get(0);
	}
}
//List集合定义时不需要指定大小,也不用指定集合中保存的数据类型
//List接口的add(Object o)方法的参数类型为Object,即使调用时传入其他类型,但系统认为是Object类型,所以用get方法获取元素是必须进行强制类型转换
//获取List集合的元素时使用get方法并传入下标,然后强制转化为实际类型
//使用remove,contains,indexOf等方法时应该重写类的equals方法

三.迭代器iterator

所有集合接口和类都没有提供相应都遍历方法,而是把遍历交给迭代器Iterator完成。它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。

Collection接口的iterator()方法返回一个Iterator。

//Iterator接口两个方法
boolean hasNext()//判断是否存在另一个可访问的元素
Object next()//返回要访问的下一个元素

四.泛型集合

泛型有效的解决了上面提到的集合的add()方法的弊端,使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换,并且如果把非指定类型对象放入集合,会出现编译错误。

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

public class m1 {
    public static void main(String [] args){
        Student stu1 = new Student("Tom",10);
        Student stu2 = new Student("Aim",11);
        //泛型集合
        List<Student> list = new ArrayList<Student>();
        list.add(stu1);
        list.add(stu2);
        //get()方法不需要再强制类型转换
        Student student = list.get(1);
        System.out.println("学生2:" + student.getName() + "\t" + student.getAge());
    }

}
class Student{
    String name;
    int age;
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}
posted @ 2020-06-13 23:35  不知名的菜鸟  阅读(165)  评论(0编辑  收藏  举报