JavaAPI1(集合框架与泛型)

第一章:集合框架和泛型
1、为什么使用集合框架?
  数组长度固定,而集合是“动态数组”,
  如果不知道存储多少对象,或者需要更复杂的方式,可以使用集合框架
2、java集合框架提供了一套性能优良,使用方便的接口和类,位于java.util包中;java的集合类主要由Map接口和Collection接口派生而来;
  (1)父接口Collection
    1>子接口List:存储一组不唯一,有序的对象
      a.实现类ArrayList:
       优点:以“动态数组方式”实现,在内存中分配连续的空间,实现了长度可变的数组,遍历元素和随机访问元素的效率高
       方法:在列表末尾添加元素:add(Object)
          在指定下标添加元素:add(index,Object)
          根据对象删除元素:remove(Object)
          根据下标删除元素:remove(index)
          根据下标修改该下标处的元素:set(index,Object)
          返回列表中的元素个数:size()
          返回指定下标处的元素:get(index)
         返回指定元素的下标:indexOf(Object)
         根据对象判断是否存在该元素,有返回true:contains(Object)
         清空集合中的所有的元素:clear()
         判断集合中是否为空,空返回true:isEmpty()
         以正序返回一个包含此列表中所有元素的数组,返回的数组类型是指定数组的运行时类型:toArray()
      b.实现类LinkedList
      优点:采用链表的存储方式,插入和删除的效率比较高
      方法: 在下标首位添加元素:addFirst(Object)
         在下标末尾添加元素:addLast(Object)
         获取下标首位元素:getFirst()
         获取下标末尾元素:getLast()
         删除下标首位元素:removeFirst()
         删除下标末尾元素:removeLast()
     2>子接口Set:存储唯一,无序的对象(没有下标)
      a.实现类HashSet:元素无序排列;是非线程安全的;允许元素为null
      b.实现类TreeSet
     注意:Set接口不存在get()方法
     3>遍历集合:
      方法1:通过迭代器Iterator实现遍历
         Iterator接口表示对集合进行迭代的迭代器,Iterator接口为集合而生,专门实现集合的遍历, 此接口主要有如下两个方法:
          boolean hasNext(): 判断是否存在另一个可访问的元素
         Object next(): 返回要访问的下一个元素
         Iterator ite=list.iterator();      //获取集合迭代器
         while(ite.hasNext()){     //判断是否存在另一个可访问的元素
           String name=(String)ite.next();   //返回要访问的下一个元素 //注:添加到集合当中的数据将被转为Object类型,使用时需强转
           System.out.println(name);
         }
      方法2:增强型for循环
          for(Object obj:students){
            Student stu=(Student)obj;
            System.out.println(stu.getStuName());
           }
      方法3:普通for循环(set遍历不可用)
          for(int i=0;i<list.size();i++){
           String name= (String) list.get(i);
           System.out.println(name);
          }
  (2)Map接口:存储一组成对的键(key)-值(value)对,提供key到value的映射;键不可重复,值可以重复
    1>实现类HashMap:查询指定元素的效率高
     添加键值对:put(key,value)
     删除值:remove(key)
     获取值:get(key)
     判断是否存在key,返回布尔:containsKey()
     判断是否存在value,返回布尔:containsvalue()
      获取key中的集合:Set ketSet()
      获取values中的集合:Collection values()
   2>实现类TreeMap
   3>遍历Map集合:
    方法1:通过迭代器Iterator实现遍历
        Map<String,ArrayList<Student>> maps=new HashMap<>();
         Set keys=maps.keySet(); //所有班级
         Iterator it=keys.iterator();
         while (it.hasNext()){
           String stusKey= (String) it.next(); //获取某个班级
           System.out.println(stusKey+“班学生有:”);
           Iterator stu=maps.get(stusKey).iterator(); //某个班级的所有学生
           while (stu.hasNext()){
             Student student= (Student) stu.next(); //某个班级的某个学生
             System.out.println(“姓名:”+student.getName());
           }
         }
    方法2:增强型for循环
        Map<String,ArrayList> maps=new HashMap<>();
         Set keys=maps.keySet();
         for(String stusKey:keys){
           System.out.println(stusKey+“班学生有:”);
           for(Student stu:maps.get(stusKey)){
              System.out.println(“姓名:”+stu.getName());
           }
         }
    方法3:键值对
3、泛型
 (1)含义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性,本质是参数化类型;
 (2)泛型集合:
    泛型集合可以约束集合内的元素类型 ;
    典型泛型集合ArrayList<E>、HashMap<K,V>
    <E>、<K,V>表示该泛型集合中的元素类型
   泛型集合中的数据不再转换为Object
 (3)深入泛型:
    定义泛型类、泛型接口和泛型方法
    多个参数的泛型类
    从泛型类派生子类
4、collections:操作集合的类
  1>Java集合框架将针对不同数据结构算法的实现都保存在工具类中;
  2>Collections和Collection不同,前者是集合的操作类,后者是集合接口;
  3>Collections类定义了一系列用于操作集合的静态方法:
    升序排序:sort()
    根据集合list反查元素Object的下标:binarySearch(list,Object)
    最大值:max()
   最小值:min()
   用元素Object填充list集合:fill(list,Object)
    reverse()
  4>实现一个类的对象之间比较大小,该类要实现Comparable接口,重写compareTo()方法;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值