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
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
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
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());
        }
    }
时间: 2024-12-26 17:09:42

java面向对象第七章的相关文章

java:第七章

第七章 循环的强化练习 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("青鸟游戏平台>游戏币支付\n"); System.out.println("请选择您玩的游戏类型:\n"); System.out.println("1.牌类"); System.out.println("2

java面向对象编程--第九章 多态和抽象

9.1多态 在生物学中,是指一个生物或物种可以有多种不同的形式或阶段: 在OOP中,多态是指一个对象有多种形式的能力. 多态可以说是面向对象编程的精髓所在.java中之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同.单继承保证了继承关系的简单明了,但势必在功能上有很大的限制. 由于子类对象中包含一个完整的父类对象,所以父类变量中定义的方法和属性在子类对象中都能找到,所以允许一个父类变量引用子类对象,但反过来却不行,因为子类的方法和属性可能多于父类. 多态调用时,用父类变量指向子类对

深入理解java虚拟机-第七章

第7章 虚拟机类加载机制 类的加载的时机 加载 Loading, 连接 Linking(验证 Verfiication, 准备Preparation, 解析 Resolution) 初始化 Initialization, 使用Using和卸载 Unloading 类加载的过程: 1,加载: 加载是“类加载" class loading过程珠一个阶段,在加载阶段,虚拟机需要完成以下3个事情. 1 通过一个类的全限定名来获取定义此类的二进制字节流 2 将这个字节流所代表的静态存储结构转化为方法区的运

java基础第七章

一.理解什么是类和对象 万事万物皆对象 1.属性--对象具有的特征(特点) 2.方法--对象可执行的操作(能干什么事) 3.对象的定义: 是一个客观存在的,看的见或摸得着的实体,由属性和方法构成 4.类是由对象抽象出来的,看不见也摸不着 5.类和对象的关系? 类(是笼统)是模子是对象的抽象化,对象(具体的)是类的具体化 String schoolName; //中心名称 int classNumber; //教室数目 int labNumber; //机房数目 //定义北大青鸟中心的方法 pub

java面向对象(第一章课后作业)

1 package com.Class_And_Object; 2 3 public class ZuoYeA01 { 4 5 int a; //定义两个整数 6 int b; 7 String fang; 8 public void jia(){ 9 System.out.println("结果"+(a+b)); 10 } 11 public void jian(){ 12 System.out.println("结果"+(a-b)); 13 } 14 publi

java面向对象第四章

一. 接口的基础知识 1.为什么需要接口 为解决实际应用中,单一继承无法解决的问题 2.什么是接口 a)   基本概念? 接口是一种特殊的抽象类 接口是一种规范和标准,可以约束类的行为,是一些方法特征集合,但方法没有方法体 b)   基本语法 访问修饰符 interface 接口名{ //定义 方法(没有方法体),方法的访问修饰符默认为public //定义 属性(默认是公共的静态的常量) 数据类型 常量名=值; } 访问修饰符只能为public和默认的 c)   注意事项? 1.接口命名,接口

java面向对象第六章

一.     异常 1.                    什么是异常? java程序在运行过程中出现的意外情况 2.                    java中如何进行异常处理? java中的异常处理机制 try.catch.finally.throw.throws try{ //有可能出现异常的代码 }catch(异常类型){    //对出现的异常进行捕获和处理 return; //System.exit(1);// finally语句块将不执行 }finally{ //不管程序

java面向对象第三章

w 子类名(); 3.2 方法名(子类对象): 3.3 方法的返回类型是父类 访问修饰符 父类名 方法名([参数列表]){ return 父类对象或子类对象; } //子类,圆形 public class Circular extends Graph { private final double X=3.14; //半径 public Circular(double r){ super(r); } public void getArea(){ double m=(super.getLen()*X

Thinking In Java笔记(第七章 复用类)

第七章 复用类 复用代码是Java众多引人注目的功能之一,但想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. Java中所有事物都是围绕着类来展开的.通过创建新类来复用代码,不必重新开头编写.此方法的窍门在于使用类而不破坏现有程序代码.本章中有两种代码重用机制来达到这一目的: 只需要在新的类中生成现有类的对象.由于新的类是由现有类的对象所组成的,这种方法通常成为组合.该方法只是复用了现有程序代码功能,而非形式上和之前的类有相似之处. 第二种方法更加细致