- 浏览: 25185 次
- 性别:
- 来自: 北京
最新评论
ArrayList
TreeSet
以有序状态保持并可防止重复
HashMap
可用成对的key/value来保存与取出
LinkedList
针对经常插入或删除中间元素所设计的高效率集合(实际上ArrayList还是比较实用)
HashSet
防止重复的集合,可快速地找寻相符的元素
LinkedHashMap
类似HashMap,但可记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序。
为了让以上代码通过编译,则需要让Song实现Comparable接口,代码如下
调用单一参数的sort(List 0)方法代表由List元素上的compareTo()方法来决定顺序。因此元素必须要实现Comparable这个接口。
调用sort(List o,Comparator c)方法代表不会调用List元素的compareTo()方法,而会使用Comparator的compare()方法。这意味这List元素不需要实现Comparable接口。
3个主要接口
List 知道索引位置的集合,知道某物在系列集合中的位置,可以有多个元素引用相同的对象。
Set 注重独一无二的性质,不会有多个元素引用相同的对象。
Map key不能重复,典型的key会是String,但也可以是任何对象。
对象相等性
如果你想要把两个不同的对象是为相等的,就必须覆盖过从Object继承下来的hashCode()方法与equals()方法。
HashSet检查重复时,先检查hashCode()(用它先筛),若没有相同的,则不重复;若相同,则用equals方法确认(因为不同对象的hashCode可能相同)。
两个对象相等(equals()),则hashCode必须相等。因此如果equals()被覆盖,则hashCode()也必须被覆盖。
如果想要保持有序,使用TreeSet。TreeSet的元素必须实现Comparable或者用带Comparator参数的构造方法来创建TreeSet。
使用多态参数与泛型
数组参数:
集合参数:
以上的原因是 数组的类型是在运行期间检查的,但集合的类型检查只会发生在编译期间。
TreeSet
以有序状态保持并可防止重复
HashMap
可用成对的key/value来保存与取出
LinkedList
针对经常插入或删除中间元素所设计的高效率集合(实际上ArrayList还是比较实用)
HashSet
防止重复的集合,可快速地找寻相符的元素
LinkedHashMap
类似HashMap,但可记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序。
songList = new ArrayList<Song>()//Song是一个类; Collections.sort(songList);//参数是List接口,而List中的元素必须是实现了Comparable接口的
为了让以上代码通过编译,则需要让Song实现Comparable接口,代码如下
class Song implemets Comparable<Song>{ String title; ... public int compareTo(Song s) { return title.compareTo(s.getTitle());//String已经实现了Comparable } }
调用单一参数的sort(List 0)方法代表由List元素上的compareTo()方法来决定顺序。因此元素必须要实现Comparable这个接口。
调用sort(List o,Comparator c)方法代表不会调用List元素的compareTo()方法,而会使用Comparator的compare()方法。这意味这List元素不需要实现Comparable接口。
class ArtistCompare implements Comparator<Song> { public int compare(Song one,Sone two) { return one.getArtist().compareTo(two.getArtist()); } }
3个主要接口
List 知道索引位置的集合,知道某物在系列集合中的位置,可以有多个元素引用相同的对象。
Set 注重独一无二的性质,不会有多个元素引用相同的对象。
Map key不能重复,典型的key会是String,但也可以是任何对象。
对象相等性
如果你想要把两个不同的对象是为相等的,就必须覆盖过从Object继承下来的hashCode()方法与equals()方法。
HashSet检查重复时,先检查hashCode()(用它先筛),若没有相同的,则不重复;若相同,则用equals方法确认(因为不同对象的hashCode可能相同)。
两个对象相等(equals()),则hashCode必须相等。因此如果equals()被覆盖,则hashCode()也必须被覆盖。
如果想要保持有序,使用TreeSet。TreeSet的元素必须实现Comparable或者用带Comparator参数的构造方法来创建TreeSet。
使用多态参数与泛型
数组参数:
public void takeAnimals(Animal[] animals) { ... } takeAnimals(animals);//Animal的对象的数组 takeAnimals(dogs);//Dog是Animal的子类,dogs是Dog数组,也合法,但是Cat也可能会混入数组了,因为编译器看来,数组是Animal的,单个元素可以赋值Cat,但编译不会报错,倘若Cat真的进来了,运行期会报错,因为数组实际上是Dog数组。
集合参数:
public void takeAnimals(ArrayList<Animal> animals) { ... } takeAnimals(animals);//ArrayList<Animal>,合法 takeAnimals(dogs);//ArrayList<Dog>,不合法,因为这样有可能导致Dog的集合里混入Cat。。。
以上的原因是 数组的类型是在运行期间检查的,但集合的类型检查只会发生在编译期间。
//这样就可以传子类参数了,但是这样的话,编译器不允许加入任何东西到集合中,好吧,这样Cat就进不来了。也可以写成public<T extends Animal> void takeAnimals(ArrayList<T> list),这是为了参数多时,书写麻烦,只需一次声明就好了。 public void takeAnimals(ArrayList<? extends Animal> animals) { ... }
发表评论
-
deee
2011-12-14 01:44 884string htmlcode = "<H ... -
布局管理器
2011-06-24 11:33 677布局管理器是个与特定组件相关联的Java对象,它大多数是背景组 ... -
内部类
2011-06-24 10:27 557内部类 内部类对外部的类有一张特殊的通行证,能够自由存取它的内 ... -
PrintWriter
2011-06-22 21:53 975PrintWriter可能比BufferedWriter更高级 ... -
网络与线程
2011-06-22 21:26 582常见的TCP端口号 FTP 20 T ... -
Java读文件(转)
2011-06-22 17:09 6581 File类 File 类封装了对用户机器的文件系统进行操 ... -
序列化和文件的输入输出
2011-06-22 10:47 695//序列化 FileOutputStream fileStr ... -
异常处理
2011-06-21 21:41 523编译器不会注意RuntimeException类型的异常。以为 ... -
HashMap中的泛型
2011-06-21 21:09 1235HashMap<String,Integer> h ... -
逐字符的读文件
2011-06-21 17:23 710BufferedReader reader = new Buf ... -
数字与静态
2011-06-20 21:26 534静态方法不能调用非静态的变量(方法内定义的变量当然可以用,这里 ... -
构造器与垃圾收集器
2011-06-20 17:16 547对象(包括实例变量)的生存空间:堆 方法调用及变量(局部变量) ... -
super和this
2011-06-20 16:50 571super和this的异同: 1)super(参数):调用基 ... -
接口与抽象类
2011-06-20 15:50 565方法中有一个是抽象的,该类就必须是抽象类 继承树结构下的第一 ... -
继承与多态
2011-06-20 14:55 704继承:extends java虚拟机 ... -
编程方法
2011-06-19 16:03 510先写测试码,再写程序。 因为: 1 思索与编写测试用的程序代码 ... -
对象的行为
2011-06-19 15:48 508Java是通过值传递的,也就是说通过拷贝传递 封装:将实例变 ... -
认识变量
2011-06-19 15:21 558变量有两种:primitive主数据类型和引用 Java pr ...
相关推荐
C#中的集合与泛型应用实例,针对集合与泛型进行详细讲解,代码简单易懂。
java集合与泛型[参照].pdf
Java中的集合类与泛型机制(Java SE 1.5中加入了泛型机制)
java集合与泛型.pdf
适合新手学习的一些代码,主要示范了集合与泛型集合的使用
java集合与泛型[参考].pdf
JAVA集合与泛型PPT教案学习.pptx
集合框架及泛型的介绍和基础理解,方便大家了解集合框架及泛型。
java基础知识学习教程-9集合与泛型
泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合
第14章元素增删检索——集合与泛型.ppt
Java编程详细教程Java集合与泛型PPT教案学习.pptx
一个软件培训机构的部分基础包括集合与泛型委托映射WINFORM基础,因为教了钱去听的。所以下载时收一定费用。需要的人来下吧。
尚硅谷_JavaSE_第12章_集合与泛型_扩展练习_附带参考答案.md
Java 课件 (包括基础语法,数组与语句,面向对象编程,java异常处理,java常用基础类,java集合与泛型)
OCJP认证-3期(PX017) 面向对象程序设计-集合与泛型.doc 学习资料 复习资料 教学资源
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值
本次实验掌握了集合的概念、体系结构、分类及使用场景,了解了Set接口及主要实现类(HashSet、TreeSet),了解了解List接口及主要实现类(ArrayList、LinkedList、Vector),掌握ArrayList的使用及其与Vector的区别,...