java面向对象第七章

掌握集合框架包含的内容

l  java中的集合,位于包java.util

l  Java集合框架分为2大接口:

n  Collection

ListArrayListLinkedList

SetHashSetTreeSet

n  Map

HashMap

TreeMap

l  集合框架的优点?

解决数组的一些不足之处(存储数据类型单一、空间不可变,操作数据比较麻烦、性能低等),

提供了一种标准的体系结构,方便快速高效操作集合数据

public static void main(String [] args){
        //创建四个狗狗对象
        Pet ouou=new Pet("欧欧","雪瑞拉");
        Pet yaya=new Pet("亚亚","拉布拉多");
        Pet meimei=new Pet("美美","雪瑞拉");
        Pet feifei=new Pet("菲菲","拉布拉多");
        
        //创建ArrayList集合对象并把4个狗狗对象放入其中
        ArrayList p=new ArrayList();
        p.add(ouou);
        p.add(yaya);
        p.add(meimei);
        p.add(2, feifei);        //把feifei添加到指定位置
        
        //输出集合中的狗狗的数量
        System.out.println("共计有"+p.size()+"条狗。");
        
        //通过便利集合来显示个条狗狗的信息
        System.out.println("分别是:");
        for(int i=0;i<p.size();i++){
            Pet e=(Pet)p.get(i);        //强制转换
             System.out.println(e.getName()+"\t"+e.getType());
        }
        
    }

ArrayList
ArrayList
public static void main(String [] args){
        //创建四个狗狗对象
        Pet ouou=new Pet("欧欧","雪瑞拉");
        Pet yaya=new Pet("亚亚","拉布拉多");
        Pet meimei=new Pet("美美","雪瑞拉");
        Pet feifei=new Pet("菲菲","拉布拉多");
        
        //创建LinkedList集合 对象并把多个狗狗放入对象中
        LinkedList l=new LinkedList();
        l.add(ouou);
        l.add(yaya);
        l.addLast(meimei);        //将meimei放到第一
        l.addFirst(feifei);        //将feifei放到最后
        
        //查看集合中第一条狗狗的名称
        Pet pFrist=(Pet)l.getFirst();    
        System.out.println("第一条狗狗的昵称是:"+pFrist.getName());
        
        //查看最后一条狗狗的昵称
        Pet pLast=(Pet)l.getLast();
        System.out.println("最后一条狗狗的昵称是:"+pLast.getName());
        
        //删除集合中第一条和最后一条狗狗
        l.removeFirst();
        l.removeLast();
        
        //显示删除部分狗狗后集合中各条狗狗的信息
        System.out.println("\n 删除部分狗狗后还有"+l.size()+"条狗狗!");
        System.out.println("分别是:");
        for(int i=0;i<l.size();i++){
            Pet e=(Pet)l.get(i);        //强制转换
             System.out.println(e.getName()+"\t"+e.getType());
        }
    }

LinkedList
LinkedList
public static void main(String [] args){
        //1.使用HashMap存储多组国家英文简称和中文全称的"键-值对"
        HashMap countries =new HashMap();
        countries.put("CN", "中华人民共和国");
        countries.put("RU", "俄罗斯联邦");
        countries.put("FR", "法兰西共和国");
        countries.put("US", "美利坚合众国"); 
        
        //2.显示"CN"对应国家的中文全称
        String countrie=(String) countries.get("CN");  //需强制转换
        System.out.println("CN对应的国家是:"+countrie);
        
        //3.显示集合中元素个数
        System.out.println("Map中共有:"+countries.size()+"国家");
        
        //4.两次判断Map中是否存在"FR"健
        System.out.println("Map中包含FR的Key吗?"+countries.containsKey("FR"));
        
        System.out.println("去除FR");
        
        System.out.println("Map中包含FR的Key吗?"+countries.containsKey("FR"));
        
        //5.分别显示键集、值集、和键-值对集
        System.out.println(countries.keySet());
        System.out.println(countries.values());
        System.out.println(countries);
        
        //6.清空HashMap并判断
        countries.clear();  //清空
        if(countries.isEmpty()){
            System.out.println("已清空Map数据!");
        }else{
            System.out.println("数据没有清空。");    
        }
    }

HashMap
HashMap
public static void main(String [] args){
        //创建多个宠物对象
        Pet ouou=new Pet("欧欧","雪瑞拉");
        Pet yaya=new Pet("亚亚","拉布拉多");
        Pet meimei=new Pet("美美","雪瑞拉");
        Pet feifei=new Pet("菲菲","拉布拉多");
        
        //创建Map集合对象并把多个狗狗对象放入其中
        Map m=new HashMap();
        m.put(ouou.getName(), ouou);
        m.put(yaya.getName(), yaya);
        m.put(meimei.getName(),meimei);
        m.put(feifei.getName(),feifei);
        
        //通过迭代器依次输出集合中所有狗狗的信息
        System.out.println("使用Iterator遍历,所以狗狗的昵称和品种是:");
        
        Set keys=m.keySet();        //返回类型为Set,取出所有Key的集合
        Iterator it=keys.iterator();    //获取Iterator对象
        while(it.hasNext()){
            String k=(String)it.next();     //取出Key
            Pet p=(Pet)m.get(k);    //根据Key取出对应的值
            System.out.println(k+"\t"+p.getType());
        }
        
    }

迭代器
迭代器

掌握ArrayListLinkedList的使用

 常用方法【P170页的表7-1

添加: add() 该方法重载2次

     boolean add(Object e);//保存任意数据类型的元素

   void add(int index,Object e) ;//在指定的下标处,添加任意数据类型的元素

 删除:remove() 该方法重载2次

     boolean remove(Object e);根据元素的值,删除

     Object remove(int  index);根据下标位置,删除

 获取元素:get(int  index)

   元素个数:size()

  判断某个元素是否存在:boolean contains(Object  e)

以上方法,是实现了接口List的类(ArrayListLinkedList)共有的方法

l  LinkedList特有的方法:P173页表7-2

                             添加:addFirst()、addLast();

                             删除:removeFirst()、 removeLast();

                             获取:getFirst()、getLast()

l  ArrayListLinkedList的异同点?

同点:

   都实现了接口List,用来存储可重复,有序的对象

   操作数据(添加、删除、获取数据、判断等)的方法都相同

 不同点:

   存储方式不同:ArrayList和数组相同,在内存中分配连续的空间;而LinkedList采用链表方式存储数据

   效率侧重点不同:ArrayList在遍历和随机访问元素的效率较高;LinkedList在插入和删除数据效率较高

public  static void main(String [] args){
        //创建多个狗狗对象
        Pet ouou=new Pet("欧欧","雪瑞拉");
        Pet yaya=new Pet("亚亚","拉布拉多");
        Pet meimei=new Pet("美美","雪瑞拉");
        Pet feifei=new Pet("菲菲","拉布拉多");
        
        //创建ArrayList集合对象并把多个狗狗对象放入其中
        List <Pet> p=new ArrayList <Pet>();        //标记元素类型
        p.add(ouou);
        p.add(yaya);
        p.add(meimei);
        p.add(2, feifei);        //将feifei添加到指定位置

        //显示第三个元素信息
        Pet p3=p.get(2);        //无需强制转换
        System.out.println("第三个狗狗信息如下:");
        System.out.println(p3.getName()+"\t"+p3.getType());
        
        //使用foreach语句遍历Pet对象
        System.out.println("\n所有狗狗信息如下:");
        for(Pet e:p){        //无需强制转换
            System.out.println(e.getName()+"\t"+e.getType());
        }
        System.out.println( );
        for(int i=0;i<p.size();i++){
            Pet t=p.get(i);        //无需强制转换
            System.out.println(t.getName()+"\t"+t.getType());
        }
    }

 

posted @ 2017-06-15 19:21  weirdo¤  阅读(258)  评论(0编辑  收藏  举报