`

设计模式学习笔记二:面向对象基础五之集合和泛型

    博客分类:
  • .Net
阅读更多

数组
    数组的优点:数组在内存中连续存储,可以快速而容易的从头到尾的遍历元素,可以快速的修改元素;缺点:创建时必须要指定数组变量的大小,还有就是两个元素之间添加元素比较困难。
集合
    .net Framework提供了用于数据存储和检索的专用类,这些类统称集合。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口。
ArrayList
    ArrayList是命名空间System.Collections下的一部分,他是使用可用大小可按需动态增加的数组实现IList接口。
    ArrayList的容量是ArrayList可以保存的元素数。ArrayList的默认初始容量为0,随着元素添加到ArrayList中,容量会根据需要通过重新分配自动增加。使用索引可以访问此集合中的元素。此集合中的索引从0开始。
    
动物叫声比赛ArrayList表示如下:

public class Match
    {
        
//声明一ArrayList集合变量
        ArrayList arrAnimal;
        
private string  ShoutMatch()
        {
            
string Result = "";
            
//实例化ArrayList对象,注意此时没有指定ArrayList大小
            arrAnimal=new ArrayList();
            
//调用集合的Add方法添加对象,其参数的Object,所以new Cat和new Dog都没有问题
            arrAnimal.Add(new Cat("小花"));
            arrAnimal.Add(
new Dog("阿毛"));

            
//集合的Count可以得到当前元素的数量
            int AnimalCount=arrAnimal.Count;

            
foreach (Animal item in arrAnimal)
            {
                Result 
= Result + item.Shout()+";";
            }
            
return Result;
        }
    }


    移除指定索引的集合:
小花和阿毛退赛:

 arrAnimal.RemoveAt(0);
 arrAnimal.RemoveAt(
1);

集合的变化是影响全局的,他始终要保证元素的连续性。所以上面的写法是错误的。正确的写法应该是:

 arrAnimal.RemoveAt(0);
 arrAnimal.RemoveAt(
0);

    ArrayList不是类型安全的。
    装箱:就是把值类型打包到Object引用类型的一个实例中。
    

int i=123;
object o=(object)i;//boxing
    拆箱:就是指从对象中提取值类型。
    

o=123;
i
=(int)o;//unboxing

    相对于简单的赋值而言,装箱和拆箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。其次,拆箱所需的强制转换也需要进行大量的计算。


泛型
    泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所有存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所有存储的对象的类型占位符;类型参数作为其字段的类型和其方法的参数类型出现。
    
泛型集合需要System.Collections.Generic的命名空间。而List类是ArrayList类的泛型等效类。该类使用大小可按需动态增加的数组实现IList泛型接口。其实用法上关键就是在IList和List后面加'<T>',这'T'就是你需要指定的的集合的数据或对象类型。
    通常情况下,都建议使用泛型集合。因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员。此外,如果几何元素为值类型,泛型集合类型的性能优于对应的非泛型集合类型(并优于从非泛型集合类型派生的类型),因为使用泛型是不必对元素进行装箱。

分享到:
评论

相关推荐

    .Net 面向对象及设计模式总结

    1. UML类图:这是设计模式学习的基础,它用图形方式描绘类与类之间的关系,如继承、关联、聚合等,帮助我们更好地理解和设计系统架构。 2. 反射:.NET反射工厂模式利用反射机制动态创建对象,提供了在运行时获取...

    java学习笔记及设计模式

    Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...

    JAVA学习笔试(数据基础+泛型编程)-适合小白

    - **JAVA类和对象**:类是面向对象编程的基础,用于描述一组具有相似属性和行为的对象。对象是类的实例,具有类定义的属性和方法。 2. **类和对象的实现** - **myArrayList**:这可能是一个自定义实现的类似于...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    Java基础尚硅谷宋红康学习笔记

    8. **设计模式**:设计模式是解决软件设计中常见问题的通用解决方案,如工厂模式、单例模式、观察者模式、装饰者模式等。 9. **Spring框架**:Spring是Java企业级应用的主流框架,提供依赖注入、AOP、数据访问、Web...

    Java开发详解.zip

    020501_【第5章:面向对象基础】_面向对象、类与对象的定义笔记.pdf 020502_【第5章:面向对象基础】_类与对象的进一步研究笔记.pdf 020503_【第5章:面向对象基础】_封装性笔记.pdf 020504_【第5章:面向对象基础】...

    java学习笔记基础和框架

    这份“java学习笔记基础和框架”涵盖了从Java的基础概念到高级特性的全方位学习资料,非常适合初学者以及准备面试的开发者。 一、Java基础知识 1. **Java环境搭建**:首先,了解如何安装JDK(Java Development Kit...

    java 学习笔记大全

    Java是一种广泛使用的面向对象的编程语言,以其平台独立性、丰富的类库和高效性能而闻名。这份"java 学习笔记大全"包含了深入学习Java所需的关键知识点,无论你是初学者还是经验丰富的开发者,都能从中受益。 一、...

    Java学习笔记(整理)

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。这份“Java学习笔记”是为初学者准备的,旨在帮助他们快速掌握Java的基础知识。笔记中可能涵盖了以下重要知识点: 1. **Java简介*...

    Java语言程序设计学习笔记

    Java语言程序设计学习笔记是为初学者和有一定基础的开发者准备的一份详尽教程,它涵盖了从基础到进阶的各个重要知识点。这份笔记以Markdown(md)文件的形式组织,便于阅读和检索,使得学习过程更为高效。 首先,...

    javase学习笔记(全)

    这份"javase学习笔记(全)"涵盖了刘意版传智播客课程的主要内容,是学习Java编程语言的重要参考资料。以下将对Java SE的一些关键知识点进行详细解释: 1. **Java基础**:Java的基础语法包括数据类型(如整型、浮点型...

    《Java学习笔记》

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程...

    C#学习笔记_夜晚回家 (全)

    10. **最佳实践和设计模式**:笔记可能包含一些C#编程的最佳实践,如代码组织、命名规范,以及常见的设计模式(如工厂模式、单例模式、观察者模式等),这些能提升代码的可读性和可维护性。 通过这份《C#学习笔记_...

    java se个人学习笔记

    2. **类与对象**:面向对象编程的基础,包括类的定义、对象的创建、封装、继承和多态等概念。 3. **数组与集合框架**:Java中的数组和集合类,如ArrayList、LinkedList、HashMap等,以及它们的操作和使用场景。 4....

    达内的Java学习笔记

    这份“达内的Java学习笔记”涵盖了从基础到高级的Java知识体系,旨在帮助初学者和有经验的开发者深入理解Java的核心概念和技术。 1. **Java基础** - **语法结构**:了解Java的基本语法,包括数据类型(如整型、...

    java lecture note(Java学习笔记)

    - 探讨面向对象的设计模式,理解模块化编程的重要性。 - 学习如何使用包来组织代码,避免命名冲突。 #### 第六周至第七周:异常处理与集合框架 - **异常处理**:掌握try-catch-finally语句,理解异常的抛出与捕获。...

    良葛格java学习笔记

    《良葛格java学习笔记》是一份集合了Java学习精华的资源,主要针对初学者和对Java编程感兴趣的读者。这份笔记是由用户从良葛格的网站上精心整理并转化为CHM格式,便于阅读和查阅。CHM(Compiled Help Manual)是微软...

    JAVA学习笔记和例子程序值得看看

    这份"JAVA学习笔记和例子程序值得看看"的压缩包显然包含了作者在深入学习Java过程中的重要发现和理解,以及帮助深化概念理解的示例程序。让我们来详细探讨一下可能包含的知识点。 1. **基础语法**:Java的基础包括...

    JAVA面向对象编程(孙卫琴)2

    - 学习面向对象设计原则(SOLID),理解常见的设计模式,如工厂模式、单例模式、观察者模式等。 通过对这些知识点的深入学习和实践,我们可以成为熟练的Java面向对象开发者,提升解决问题的能力和代码质量。在...

    C#学习笔记......

    笔记内容包括C#语法基础、面向对象编程概念、异常处理、集合与泛型、LINQ查询、多线程编程、Asynchronous编程模型(async/await)、.NET框架、Windows Forms和WPF应用开发,以及最新的C#版本特性如nullable ...

Global site tag (gtag.js) - Google Analytics