zoukankan      html  css  js  c++  java
  • 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() + "	" + 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;
        }
    }
    
  • 相关阅读:
    跟我一起写 Makefile
    NFS服务器配置
    q
    tar命令的详细解释
    etc/xinetd.d目录介绍
    ubuntu 10.04下的配置tftp服务器
    莫队板子
    Day8(分块)
    字符串板子
    字符串练习题
  • 原文地址:https://www.cnblogs.com/1911087165zzx/p/13122316.html
Copyright © 2011-2022 走看看