泛型List<T>使用示例

代码来源于"c#高级编程(第4版)",略作修改

  1using System;
  2using System.Collections;
  3using System.Collections.Generic;
  4using System.Text;
  5
  6
  7namespace Wrox.ProCSharp.VectorAsCollection
  8{
  9    class MainEntryPoint
 10    {
 11        static void Main(string[] args)
 12        {
 13
 14            List<Racer> racers = new List<Racer>();
 15            racers.Add(new Racer("Michael Schumacher", "Ferriai"));
 16            racers.Add(new Racer("Juan Pablo Montoya", "McLaren-Mercedes"));
 17            racers.Add(new Racer("Kimi Railkkonen", "McLaren-Mercedes"));
 18            racers.Add(new Racer("Mark Webber", "Williams-BMW"));
 19            racers.Add(new Racer("Rubens Barichello", "Ferriai"));
 20
 21            //遍历List
 22            foreach (Racer R in racers)
 23            {
 24                Console.WriteLine(R);
 25            }
 26
 27            Console.WriteLine("\n----------FindAll Method Demo-------------\n");
 28
 29            //查找findAll
 30            FindRacer finder = new FindRacer("Ferriai");
 31            foreach (Racer r in racers.FindAll(new Predicate<Racer>(finder.DrivingCarPredicate)))//Predicate是一个泛型的委托
 32            //foreach (Racer r in racers.FindAll(new Predicate<Racer>(FindFerriai)))//就本例而言,查找开Farriai的Racer,也可以这样写,但这样不灵活,没办法将参数传入委托
 33            {
 34                Console.WriteLine(r);
 35            }
 36
 37            Console.WriteLine("\n----------Find Method Demo-------------");
 38            //Find方法(若找到的结果不止一条时,显示第一条)
 39            FindRacer f2 = new FindRacer("McLaren-Mercedes");
 40
 41            Racer R2 = racers.Find(new Predicate<Racer>(f2.DrivingCarPredicate));
 42
 43            if (R2 != null)
 44            {
 45                Console.WriteLine(R2);
 46            }
 47            else
 48            {
 49                Console.WriteLine("No racer drive McLaren-Mercedes ");
 50            }
 51
 52            Console.WriteLine("\n----------FindLast Method Demo-------------");
 53            FindRacer f3 = new FindRacer("McLaren-Mercedes");
 54
 55            Racer R3 = racers.FindLast(new Predicate<Racer>(f2.DrivingCarPredicate));
 56
 57            if (R3 != null)
 58            {
 59                Console.WriteLine(R3);
 60            }
 61            else
 62            {
 63                Console.WriteLine("No racer drive McLaren-Mercedes ");
 64            }
 65
 66            Console.ReadLine();
 67        }
 68
 69
 70        //static bool FindFerriai(Racer R)
 71        //{
 72        //    return R.Car == "Ferriai";
 73        //}
 74
 75
 76    }
 77
 78
 79    /**//**/
 80    /**//// <summary>
 81    /// 查找Racer的类(根据car查找)
 82    /// </summary>
 83    public class FindRacer
 84    {
 85        private string _car;
 86        public FindRacer(string car)
 87        {
 88            this._car = car;
 89        }
 90
 91        public bool DrivingCarPredicate(Racer r)
 92        {
 93            return r.Car == _car;
 94        }
 95    }
 96
 97    /**//**/
 98    /**//// <summary>
 99    /// Racer类
100    /// </summary>
101    public class Racer
102    {
103        private string _name;
104        public string Name
105        {
106            get
107            {
108                return _name;
109            }
110        }
111
112        private string _car;
113        public string Car
114        {
115            get
116            {
117                return _car;
118            }
119        }
120
121        public Racer(string name, string car)
122        {
123            this._name = name;
124            this._car = car;
125        }
126
127        public override string ToString()
128        {
129            return _name + "," + _car;
130        }
131
132    }
133}

运行结果:

Michael Schumacher,Ferriai
Juan Pablo Montoya,McLaren-Mercedes
Kimi Railkkonen,McLaren-Mercedes
Mark Webber,Williams-BMW
Rubens Barichello,Ferriai

----------FindAll Method Demo-------------

Michael Schumacher,Ferriai
Rubens Barichello,Ferriai

----------Find Method Demo-------------
Juan Pablo Montoya,McLaren-Mercedes

----------FindLast Method Demo-------------
Kimi Railkkonen,McLaren-Mercedes

时间: 2024-09-12 06:25:13

泛型List<T>使用示例的相关文章

java使用泛型实现栈结构示例分享_java

思路分析:既然是用泛型实现栈结构,那就不能用JDK自带的stack包了,需要自己定义一个栈结构,比如LinkedList. 代码如下: Stack.java: 复制代码 代码如下: package cn.edu.xidian.crytoll;import java.util.LinkedList; public class Stack<T> {     private LinkedList<T> container = new LinkedList<T>();     

《Java并发性和多线程介绍》-Java TheadLocal

原文链接 作者:Jakob Jenkov   查看全部文章 Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作.因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域. 1.创建一个ThreadLocal对象 2.访问ThreadLocal对象 3.ThreadLocal泛型 4.初始化ThreadLocal 5.Full ThreadLocal Ex

java学习笔记10--泛型总结

集合类中的数据类型 集合类中可以存储各种数据,数据一旦存入,其类型均会转化为Object类型.从集合类中取出数据时,一般均需要将Object类型转换回存入之前的实际类型 Vector v=new Vector(); v.add("张三"); //存入字符串 String name=(String)v.get(0); //强制类型转换,OK v.add(new Date()); //存入当前时间对象,OK // 由于Date类型不能转换为String,下面语句会在运行时发生错误,但这种错

Java 并发工具包 java.util.concurrent 用户指南

译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html. 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf[带书签] 进行下载. 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平

【JAVA秒会技术之多线程】Java 并发工具包 java.util.concurrent 用户指南

1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类.在这个包被添加以前,你需要自己去动手实现自己的相关工具类.本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何在项目中使用它们.本文中我将使用 Java 6 版本,我不确定这和 Java 5 版本里的是否有一些差异.

C#的泛型方法解析_C#教程

C#2.0引入了泛型这个特性,由于泛型的引入,在一定程度上极大的增强了C#的生命力,可以完成C#1.0时需要编写复杂代码才可以完成的一些功能.但是作为开发者,对于泛型可谓是又爱又恨,爱的是其强大的功能,以及该特性带来的效率的提升,恨的是泛型在复杂的时候,会呈现相当复杂的语法结构.这种复杂不仅是对于初学者,对于一些有开发经验的.NET开发者,也是一个不那么容易掌握的特性.    接下来我们来了解一下C#2.0加入的特性:泛型. 一.泛型的基本特性概述:     在实际项目开发中,任何API只要将o

list泛型自定义排序示例

 这篇文章主要介绍了list泛型自定义排序示例,实现List泛型类将制定元素至前排序,大家参考使用吧 代码如下: static void Main(string[] args) {       Employee employee = new Employee();     //设置初始值     List<Employee> employeeList = new List<Employee>();     employeeList.Add(new Employee() { EmpI

泛型类/泛型委托示例

using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Windows.Forms;namespace DeletegateT{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();  

java泛型学习示例_java

Java泛型(Generics)是JDK5开始引入的一个新特性,允许在定义类和接口的时候使用类型参数(Type Parameter).声明的类型参数在使用时用具体的类型来替换,现在泛型最主要的应用是在JDK5中的新集合类框架中,Map, List均有用到.其中的优点不言而喻,我们可以横向扩展更多的类,缺点呢,其实也就是他的优点,因为这需要我们在使用泛型类的时候,要很清楚自己的代码目地,不能使用错误的类型. 最基本的泛型类 复制代码 代码如下: package com.garinzhang.jav