集合库与方便使用集合

Posted borter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合库与方便使用集合相关的知识,希望对你有一定的参考价值。

由于集合是我们经常都要用到的一种工具,所以一个集合库是十分必要的,它应该可以方便地重复使用。这 样一来,我们就可以方便地取用各种集合,将其插入自己的程序。Java 提供了这样的一个库,尽管它在Java 1.0和 1.1中都显得非常有限(Java 1.2 的集合库则无疑是一个杰作)。

1. 下溯造型与模板/通用性 为了使这些集合能够重复使用,或者“再生”,Java 提供了一种通用类型,以前曾把它叫作“Object”。单 根结构意味着、所有东西归根结底都是一个对象”!所以容纳了Object 的一个集合实际可以容纳任何东西。 这使我们对它的重复使用变得非常简便。 为使用这样的一个集合,只需添加指向它的对象句柄即可,以后可以通过句柄重新使用对象。但由于集合只 能容纳 Object,所以在我们向集合里添加对象句柄时,它会上溯造型成 Object,这样便丢失了它的身份或者 标识信息。再次使用它的时候,会得到一个Object 句柄,而非指向我们早先置入的那个类型的句柄。所以怎 样才能归还它的本来面貌,调用早先置入集合的那个对象的有用接口呢? 在这里,我们再次用到了造型(Cast)。但这一次不是在分级结构中上溯造型成一种更“通用”的类型。而 是下溯造型成一种更“特殊”的类型。这种造型方法叫作“下溯造型”(Downcasting)。举个例子来说,我 们知道在上溯造型的时候,Circle(圆)属于 Shape(几何形状)的一种类型,所以上溯造型是安全的。但 我们不知道一个Object到底是 Circle 还是Shape,所以很难保证下溯造型的安全进行,除非确切地知道自 己要操作的是什么。 但这也不是绝对危险的,因为假如下溯造型成错误的东西,会得到我们称为“违例”(Exception)的一种运 行期错误。我们稍后即会对此进行解释。但在从一个集合提取对象句柄时,必须用某种方式准确地记住它们 是什么,以保证下溯造型的正确进行。 下溯造型和运行期检查都要求花额外的时间来运行程序,而且程序员必须付出额外的精力。既然如此,我们 能不能创建一个“智能”集合,令其知道自己容纳的类型呢?这样做可消除下溯造型的必要以及潜在的错 误。答案是肯定的,我们可以采用“参数化类型”,它们是编译器能自动定制的类,可与特定的类型配合。 例如,通过使用一个参数化集合,编译器可对那个集合进行定制,使其只接受Shape,而且只提取Shape。 参数化类型是C++一个重要的组成部分,这部分是C++没有单根结构的缘故。在 C++中,用于实现参数化类型 的关键字是 template(模板)。Java 目前尚未提供参数化类型,因为由于使用的是单根结构,所以使用它显 得有些笨拙。但这并不能保证以后的版本不会实现,因为“generic”这个词已被Java“保留到将来实现” (在Ada语言中,“generic”被用来实现它的模板)。Java 采取的这种关键字保留机制其实经常让人摸不 着头脑,很难断定以后会发生什么事情。

 

 1 package Com.TomTest;
 2 
 3 class Student {
 4        int number;String name;
 5     Student(){
 6        }
 7        Student(int number,String name) {
 8         this.number=number;
 9     this.name=name;
10           System.out.println("I am "+name+ "my number is "+number);
11        }
12      }
13     class Univer_Student extends Student {
14       boolean 婚否;
15        Univer_Student(int number,String name,boolean b) {
16         super(number,name);
17           婚否=b;
18           System.out.println("婚否="+婚否);
19        }
20      }
21     public class TomTest_29 {
22        public static void main(String args[]) {
23        Univer_Student zhang=new Univer_Student(9901,"和晓林",false);
24        }
25     }

 



以上是关于集合库与方便使用集合的主要内容,如果未能解决你的问题,请参考以下文章

laravel特殊功能代码片段集合

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

数据库系统原理 片段翻译

金蝶handler中 collection 代码片段理解