• JAVA面向对象(6)


        掌握集合框架包含的内容

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

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

      Collection

    ListArrayListLinkedList

    SetHashSetTreeSet

      Map

    HashMap

    TreeMap

    集合框架的优点?

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

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

        掌握ArrayListLinkedList的使用

     添加: 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)共有的方法

    LinkedList特有的方法:

                         添加:addFirst()、addLast();

                         删除:removeFirst()、 removeLast();

                         获取:getFirst()、getLast()

    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()+"	"+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("
     删除部分狗狗后还有"+l.size()+"条狗狗!");
            System.out.println("分别是:");
            for(int i=0;i<l.size();i++){
                Pet e=(Pet)l.get(i);        //强制转换
                 System.out.println(e.getName()+"	"+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+"	"+p.getType());
            }
            
        }
    
    迭代器
    迭代器

      ArrayListLinkedList的异同点?

      相同点:

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

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

    不同点:

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

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

        掌握HashMap的使用

     位于包java.util,实现接口Map

    使用前,都要创建对象

     常用的方法:【P175页表7-3】

     添加:put(Object  key,Object  value)

      删除:remove(Object  key)

      获取值:get(Object  key)

      判断集合中是否存在某个键:containsKey(Object  key)

      集合中元素的个数:size()

      键的集合: keySet()

      值的集合:values();

      循环输出集合中的元素?——不能使用for循环

     while+Iterator迭代器一起使用

     foreach

        掌握Iterator的使用

    循环输出HashMap集合中的key(多个)和value

    方式1while+Iterator(参考代码示例5)

    Set 变量名 = HashMap类的对象. keySet();//key的集合

    Iterator 迭代器对象 = 变量名. iterator();

    while(迭代器对象.hasNext()){//判断集合中是否有元素

                  //得到一个key

                  Object key = HashMap类的对象.next();

                  //得到该key对应的value

                  Object value = HashMap类的对象.get(key);

                  ……………..编写其他代码

    }

       方式2:使用foreach循环(for循环的增强版)

      语法:

    for(数据类型变量名:数组名或集合名){

    }

    单独输出键的集合[keySet()方法]

    for(Object  key : HashMap对象.keySet()){

           System.out.println(key);//每个键key的值

    }

      单独输出值的集合(values()方法)

    for(Object  v : HashMap对象.values()){

           System.out.println(v);//每个键value的值

    }

      通过key,输出对应的value

    for(Object key:HashMap对象.keySet()){

           Object value=HashMap对象.get(key);

           ……….编写其他代码

    }

    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()+"	"+p3.getType());
            
            //使用foreach语句遍历Pet对象
            System.out.println("
    所有狗狗信息如下:");
            for(Pet e:p){        //无需强制转换
                System.out.println(e.getName()+"	"+e.getType());
            }
            System.out.println( );
            for(int i=0;i<p.size();i++){
                Pet t=p.get(i);        //无需强制转换
                System.out.println(t.getName()+"	"+t.getType());
            }
        }
  • 相关阅读:
    关于WM_CTLCOLOREDIT的处理的一些问题
    Duilib非官方更新贴~
    一个非常简单的返回局部字符数组的C语言程序, 请问其输出结果?
    更改Windows控制台默认缓冲区行数和宽度
    最新版Duilib在VS2012下编译错误的解决方法
    记C语言浮点数运算处理 "坑" 一则
    修改stb_image.c以让Duilib直接支持Ico格式的图标显示
    一个通过网络转换Ico到Png图片的小小程序(Ico2Png)
    编程调节Win7/Win8系统音量的一种方法
    分享一个最近研究的手机QQ3.0的协议(版本1.4)
  • 原文地址:https://www.cnblogs.com/etid/p/7009792.html
Copyright © 2020-2023  润新知