- 浏览: 114820 次
- 性别:
- 来自: 广西
文章分类
最新评论
-
greemqqran:
这方法 源码,是怎么的哦?
可变参数,数组与集合之间的转换 -
greemqqran:
Arrays.asList
可变参数,数组与集合之间的转换 -
ricoyu:
引用? super E:接收的是E类型对象应该是: ? sup ...
泛型-
Iterable 取出:iterator(); |--Collection: 添加:add(Obj); 删除:remove(Obj); 判断:contains(Obj),isEmpty() 个数:size(); |--List:有序,可以元素重复,元素都有索引。 添加:add(index,Obj) 删除:remove(index) 取出:get(index) 修改: set(index,Obj) 索引:indexOf(Obj) 子列表:subList(start,end) |--ArrayList:数据结构是:数组,线程不安全的,查询速度快。 |--Vector:数据结构:数组,线程安全。无论增删或者查询效率都很低。被ArrayList替代。 |--LinkedList:数据结构:链表。线程不安全的,增删速度很快。 |--Set:无序,不可以元素重复,其中的方法和Collection一致。 |--HashSet:数据结构:哈希表。如何保证元素唯一性的呢? 通过元素的两个方法,hashCode,equals来完成元素唯一性。 先判断hashCode是否想等,如果相等才会判断equals。 |--TreeSet:数据结构:二叉树。可以对Set集合中的元素进行自定义的排序。 那么排序就需进行比较。 元素的比较方式一: 让元素自身具备比较性,需要实现Comparable,覆盖compareTo(obj)方法。 元素的比较方式二: 当元素自身不具备比较性,或者元素具备的比较性不是所需要,这时就必须用第二种方式。 让容器具备比较性。定义一个类去实现Comparator接口,并覆盖compare(obj1,obj2)方法。 并将Comparator接口的子类对象作为参数传递TreeSet集合的构造函数。 TreeSet集合如何保证元素唯一性的呢?通过return 0; 相对而言,第二种方式较为常用。 注意:在进行比较的时,一定要明确主要条件和次要条件。 技巧: 当看到Hash开头的对象,底层用的是哈希表。就要想到hashCode方法和equals方法。 当看到Tree开头,就要想到二叉树。就要想到两个接口, 一个是Comparable,一个是Comparator。 Vector是JDK1.0版本出现,里面有一种取出方式:枚举Enumeration。 该枚举中有两个方法: hasMoreElements() nextElement() 因为名称过长,被迭代器Iterator: hasNext() next() 明确的是枚举和迭代的功能是一致的。 迭代器: 其实就是一种取出方式,加上循环可以取出容器中所有元素。 相当于,大型游戏厅里的 抓娃娃的游戏。迭代器就是这个游戏中的夹子。 是一种规则,每一个容器都在内部实现了这个取出规则。 每一个容器都通过一个方法返回了一个符合规则的对象,这个方法就是iterator(); 该法方法在JDK1.5被抽取到了Iterable接口中,、 Iterable接口是Collection的父接口,它的出现提供了一个增强的for循环。 ArrayList al = new ArrayList(); al.add("abc"); for(Iterator it = al.iterator(); it.hasNext(); ) { Object obj = it.next(); //只使用Object中的方法可以不用强转。 System.out.println(obj.toString());//打印的是abc。 //如果想打印元素的长度。就必须要强转,因为用到了元素的特有方法。 String s = (String)obj; System.out.println(s.length()); } 因为容器可以存放不同类型的对象,在添加的时候,add方法必须通过参数Object来接收。 add(new Demo());//Object obj = new Demo(); 通过add方法,元素都被提升成了object 。 所以取出的一定是Object,那么如果只使用Object类中的方法,可以不需要强转。 如果要使用元素的特有方法,必须要强转。代码如上。 在实际开发时,对于事物的描述。取出特有属性和行为外, 最好重写hashCode方法和equals方法,同时实现Comparable接口。定义该事物自然比较方式。 class Student implements Comparable { private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Object obj) { Student s = (Student)obj; if(this.age>s.age) return 1; if(this.age==s.age) return this.name.compareTo(s.name); return -1; } public boolean equals(Object obj) { if(!(obj instanceOf Student)) return false; Student s = (Student)obj; return this.name.equals(s.name) && this.age == s.age; } public int hashCode() { return name.hashCode()+age*39; } public String getName() { return name; } public String toString() { return name+":::"+age; } }
发表评论
-
动态代理+注解实现用户权限控制
2012-12-23 00:01 1252首先第一步我们需要定义一个接口UserDao p ... -
JDK动态代理模式
2012-12-22 21:51 865package cn.dhcool.dynamic.proxy ... -
代理proxy模式
2012-12-22 20:45 0静态代理模式: 需要有一个公共的借口,还有一个真实的实现类, ... -
工厂模式下出现的问题-null异常
2012-12-15 18:31 879遇到了一个问题: public class Dao ... -
内部类详解
2011-12-09 21:23 595从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
动态代理实现
2011-11-22 02:03 990package com.dhcool.proxy; ... -
内省总结
2011-11-19 02:43 780package com.dhcool.introspec ... -
线程锁
2011-10-10 13:27 785sleep(), wait(),yield(),这3个方法,s ... -
类似百度谷歌分页算法实现
2011-09-08 15:58 1544<%@ page language="j ... -
充当服务端代码
2011-08-05 16:53 638import java.net.*; import java ... -
获取文件中邮件的示例
2011-08-05 12:25 708import java.util.regex.*; impo ... -
正则表达式常用字符
2011-08-05 12:22 827构造 匹配 字符 x 字符 x ... -
正则表达式
2011-08-05 12:16 780第一种:1.定义匹配规则如:String qqreg = &q ... -
InetAddress
2011-08-04 21:59 861import java.net.*; class Inet ... -
B/S socket
2011-08-04 21:08 999import java.net.*; import java ... -
TCP多线程文件上传
2011-08-04 14:51 855/* 上传图片 */ import java.io.*; ... -
网络编程基础
2011-08-04 14:25 803网络编程: 网络通讯中所需要了解的一些内容。 T ... -
一道题
2011-08-02 21:05 579/* 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 ... -
TCP
2011-08-02 20:46 718import java.net.*; import ja ... -
UDP
2011-08-02 20:35 821import java.net.*; import java ...
相关推荐
Dictionary比Collection慢好多; 采用了高精度计时器进行比较,可以精确到微秒; 添加速度快1-2倍 读取快3倍 删除有时快5倍 具体数据量不一样,CPU和电脑不同,结果也不同。 Dictionary,加20万条,用时2371.5783毫秒...
mybatis 多层级collection嵌套
Denise Milani Video Collection
集合框架包含collection和map的子类。其中collection包含list、set和queue。map包括hashmap、hashtable和treemap
This volume in The Netter Collection of Medical Illustrations (the CIBA "Green Books") has been expanded and revised by Drs. Christopher Rehbeck Kelly and Jaime Landman to capture current clinical ...
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
Mesh Deformation Full Collection.unitypackage
Telerik Collection for . net 2021是一个可靠的,强大的和最知名的集合。net语言程序员的开发人员,使他们能够创建交互式用户界面的进度开发和专业报告不同的平台,如桌面或移动。 它是一个全功能的应用程序提供了...
nik collection 4.0.7中文版是一款非常好用的创意照片编辑软件,软件内的新界面更现代、更吸引人、更实用,并且它还提供了对所有可用工具和预设的更快访问,因此您可以专注于最重要的事情或者找到自己的风格。...
The Garbage Collection Handbook The Art of Automatic Memory Management, Jones, Hosking, Moss, 2012
它应该与任何JS引擎,甚至IE6都兼容(尽管到目前为止还没有针对它进行过测试) 缩小collection-js的权重16KB,仅专注于集合。内容代码示例JS var List = Collection . List ;var Set = Collection . Set ;var ...
The Animation Collection..zip,动画集合。
前几天学习了collection的文档,里面主要是collection的基础知识,大神们自动忽略吧
UML files collection2
java Collection类整理
C++ Collection.zip
All Star Character Collection 5.2 Unity人物 全明星 30角色全动作模型.txt
mytabis 报错 Mapped Statements collection does not contain value for
Utilu IE Collection,IE 兼容工具包,包含了IE2.0-IE8 渲染引擎,并可以同时使用这些引擎。因为IE并至今还没有完全遵循W3C Web国际标准,适用于网页开发者进行兼容性测试。 Internet Explorer Collection包含的IE...