27.使用泛型集合

/**
* 宠物类,狗狗和企鹅的父类*/
public abstract class Pet {
    protected String name = "无名氏";// 昵称
    protected int health = 100;// 健康值
    protected int love = 0;// 亲密度

    public abstract void eat();  //抽象方法eat(),负责宠物吃饭功能。

    /**
     * 无参构造方法。
     */
    public Pet() {
    }
    /**
     * 有参构造方法。
     * @param name  昵称
     */
    public Pet(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public int getHealth() {
        return health;
    }
    public int getLove() {
        return love;
    }
    /**
     * 输出宠物信息。
     */
    public void print() {
        System.out.println("宠物的自白:\n我的名字叫" + this.name +
                ",健康值是"    + this.health + ",和主人的亲密度是"
                + this.love + "。");
    }
}
/**
 * 狗狗类,宠物的子类。*/
public class Dog extends Pet {
    private String strain;// 品种
    /**
     * 有参构造方法。
     * @param name   昵称
     * @param strain   品种
     */
    public Dog(String name, String strain) {
        super(name);
        this.strain = strain;
    }
    public String getStrain() {
        return strain;
    }
    /**
     * 重写父类的print方法。
     */
    public void print(){
        super.print(); //调用父类的print方法
        System.out.println("我是一只 " + this.strain + "。");
    }
    /**
     * 实现吃饭方法。
     */
    public void eat() {
        super.health = super.health + 3;
        System.out.println("狗狗"+super.name + "吃饱啦!健康值增加3。");
    }
}
import java.util.ArrayList;
import java.util.List;

import cn.jbit.epet.poly.Dog;

/**
 * 测试对List应用泛型*/
public class TestList {
    public static void main(String[] args) {
        /* 1、创建多个狗狗对象*/
        Dog ououDog = new Dog("欧欧", "雪娜瑞");
        Dog yayaDog = new Dog("亚亚", "拉布拉多");
        Dog meimeiDog = new Dog("美美", "雪娜瑞");
        Dog feifeiDog = new Dog("菲菲", "拉布拉多");
        /* 2、创建ArrayList集合对象并把多个狗狗对象放入其中*/
        List<Dog> dogs = new ArrayList<Dog>();//标记元素类型
        dogs.add(ououDog);
        dogs.add(yayaDog);
        dogs.add(meimeiDog);
        dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置
        //dogs.add("hello"); //出现编译错误,元素类型不是Dog。
        /* 3、 显示第三个元素的信息*/
        Dog dog3 = dogs.get(2); //无需类型强制转换
        System.out.println("第三个狗狗的信息如下:");
        System.out.println(dog3.getName() + "\t" + dog3.getStrain());
        /*4、使用foreach语句遍历dogs对象*/
        System.out.println("\n所有狗狗的信息如下:");
        for(Dog dog:dogs){//无需类型强制转换
            System.out.println(dog.getName() + "\t" + dog.getStrain());
        }
    }
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import cn.jbit.epet.poly.Dog;

/**
 * 测试对Map应用泛型
 *
 */
public class TestMap {
    public static void main(String[] args) {
        /* 1、创建多个狗狗对象*/
        Dog ououDog = new Dog("欧欧", "雪娜瑞");
        Dog yayaDog = new Dog("亚亚", "拉布拉多");
        Dog meimeiDog = new Dog("美美", "雪娜瑞");
        Dog feifeiDog = new Dog("菲菲", "拉布拉多");
        /* 2、创建Map集合对象并把多个狗狗对象放入其中*/
        Map<String,Dog> dogMap=new HashMap<String,Dog>();
        dogMap.put(ououDog.getName(),ououDog);
        dogMap.put(yayaDog.getName(),yayaDog);
        dogMap.put(meimeiDog.getName(),meimeiDog);
        dogMap.put(feifeiDog.getName(),feifeiDog);
        /*3、通过迭代器依次输出集合中所有狗狗的信息*/
        System.out.println("使用Iterator遍历,所有狗狗的昵称和品种分别是:");
        Set<String> keys=dogMap.keySet();//取出所有key的集合
        Iterator<String> it=keys.iterator();//获取Iterator对象
        while(it.hasNext()){
            String key=it.next();  //取出key
            Dog dog=dogMap.get(key);  //根据key取出对应的值
            System.out.println(key+"\t"+dog.getStrain());
        }
        /*//使用foreach语句输出集合中所有狗狗的信息
         for(String key:keys){
            Dog dog=dogMap.get(key);  //根据key取出对应的值
            System.out.println(key+"\t"+dog.getStrain());
        }*/
    }
}
时间: 2024-07-30 23:52:05

27.使用泛型集合的相关文章

2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合

1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法使用的是override关键字 例: 我们都知道,喜鹊(Magpie).老鹰(Eagle).企鹅(Penguin)都是属于鸟类,我们可以根据这三者的共有特性提取出鸟类(Bird)做为父类,喜鹊喜欢吃虫子,老鹰喜欢吃肉,企鹅喜欢吃鱼. 创建基类Bird如下,添加一个虚方法Eat(): /// <sum

数据模型和数据访问类以及属性扩展和泛型集合

数据模型: 数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,将数据表中的行数据组成一个同样结构的对象,方便使用. 1 public class Car 2 { 3 SqlConnection conn = null; 4 SqlCommand com = null; 5 public Car() 6 { 7 conn = new SqlConnection("server=.;database=ADOlianxi0425;user=sa;pwd=123;"); 8 com

读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

转自 http://www.cnblogs.com/wuhuisheng/archive/2012/04/26/2471733.html 1 /// <summary> 2 /// 获取UserInfo泛型集合 3 /// </summary> 4 /// <param name="connStr">数据库连接字符串</param> 5 /// <param name="sqlStr">要查询的T-SQL&

对比两个同类型的泛型集合并返回差异泛型集合 ——两个List&lt;类名&gt;的比较

1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam name="T">泛型类型</typeparam> 5: /// <param name="newModel">修改后的数据集合</param> 6: /// <param name="oldModel"&g

List泛型集合、装箱和拆箱、Dictionary

1.List泛型集合 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _02_List泛型集合 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //创建泛型集合对象 14 //Li

C#中ArrayList和泛型集合List方法概述概述

首先,ArrayList集合和List都是非静态类,使用时都必须先实列化. ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型. 常用方法如下: 1.Add():方法用于添加一个元素到当前列表的末尾 2.AddRange():方法用于添加一批元素(数组或者集合)到列表的末尾 3.Remove():方法用于删除一个元素,通过元素本身的引用来删除,填什么删什么 4.RemoveAt():方法用于删除一个元素,通过索引值来删除 5.Rem

C#入门Dictionary&lt;k,v&gt;泛型集合

关于Dictionary<k,v>泛型集合 Dictionary<k,v>通常成为字典,<k,v>约束集合中元素类型: 编译时检查类型约束,无需装箱拆箱操作,与哈希表操作类似: 1 static void Main(string[] args) 2 { 3 //创建几个学员对象 4 Student objStudent1 = new Student(1001, "小明"); 5 Student objStudent2 = new Student(10

Reflection和Expression Tree解析泛型集合快速定制特殊格式的Json

很多项目都会用到Json,而且大部分的Json都是格式固定,功能强大,转换简单等,标准的key,value集合字符串:直接JsonConvert.SerializeObject(List<T>)就可以搞定了,但凡事并非千篇一律,比如有的时候我们需要的Json可能只需要value,不需要key,并且前后可能还需要辅助信息等等,那该怎么办呢?我所能想到的可能有两种方案,1.自定义跟所需json格式一样的数据结构model,然后用JsonConvert.SerializeObject(model)直

C#入门泛型集合List&lt;T&gt;

泛型集合 List<T> List<T>泛型集合特点: <T>表示泛型,T是Type简写,表示当前不确定具体类型: 可以根据用户的实际需要,确定当前集合需要存放的数据类型,一旦确定不可改变: 使用泛型集合只能添加一种类型的数据,数据取出后无需强制转换 1 static void Main(string[] args)  2 { 3 //创建几个学员对象 4 Student objStudent1 = new Student(1001, "小明");