[zhuangzai]java容器
Java容器类学习心得
由于我对C++比较熟悉,所以学习Java应该重点体会Java带来的新概念。本文基本上是Java标准库中集合框架的基本概念,没有例子。写本文的目的在于方便我很长时间后若是忘了这些东西可以通过这片文章迅速回忆起来。
1. 接口
整个Java容器类的基础是容器接口(例如Collection,Map等接口),而不是类。使用接口的最大好处在于将容器的实现与容器的接口分开,这就意味着你可以使用相同的方法访问容器而不用关心容器是由什么样的数据结构实现的。同样,Iterator接口也使得用户可以使用相同的方法访问不同的容器类。以上这些是通用算法的基础。
1.1 Collection接口
Collection接口有如下基本方法:
boolean add(Object obj):如果添加对象后,集合确实发生了变化,则返回true;否则返回false
Iterator iterator():返回一个实现了Iterator接口的对象
此外,还有
int size(),boolean isEmpty(),boolean contains(Object obj),void clear()等许多有用的方法
1.2 Map接口
Map用于存放关键字/值对。有如下基本方法:
Object get(Object key)
Object put(Object key,Object balue)
Set keySet()
Set entrySet()
此外,还有其他有用的方法。
需要注意的是,从表面看它似乎就是一种由键值对构成的集合,但实际上并不是这样。不过另一方面假如将Map的某一部分看作集合,有时候也还是显得非常方便的。换言之你可以创建一个集合用它来表达Map的那一部分。综上所述,一个Map可以返回的东西包括它的键值构成的一个Set、由它的值构成的一个集合或者由它的键值对构成的一个Set。
1.3 Iterator接口
Iterator接口有下面3个基本方法:
Object next():返回迭代器刚越过的元素的引用
boolean hasNext():判断容器内是否还有可供访问的元素
void remove():删除迭代器刚越过的元素
注意:Java中的迭代器与STL中的迭代器在概念上有很重要的区别。在STL中,迭代器类似于数组的索引,使用这种迭代器可以查看存放在该位置上的元素(类似于通过数组索引i来访问c[i]一样)。Java中的迭代器并不这样运行。查看与位置的变化紧密的结合在一起。每次通过next()访问一个元素的同时,迭代器的位置会自动向前走一步。
这个问题可以这样理解:Java中的迭代器指向的位置并不是元素,而是元素之间。这样,每次调用next()时,迭代器便越过下一个元素,同时返回它刚越过的那个元素的引用。
根据上面的说明,很容易得出下面的代码
相关文档:
以下代码能否编译通过,如果不能,请说明理由,如果能,请说明结果。
public class a {
{
System.out.println("AAA");
}
a() {
System.out.println("BBB");
}
{
System.out.println("CCC");
}
class aa extends a {
{
new a();
System.out.prin ......
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中, ......
public class TreeNodes{
IList<BranchInfo> branchs = BranchInfoManager.getAllBranchInfos();
foreach(BranchInfo branch in branchs){
TreeNode branchNode = new TreeNodeCreate(branch.BranchName,branch.BranchId.toString(),"","~/Images/menuclose.gif");
  ......
在看到Thinking in java 第四章时初始化相关问题的时候,我们不由地把注意力移到构造器上。这里做个简单的总结,便于高手指正以及自己温故。
首先构造器是要构造一个东西{构造对象(实例)}并对其初始化。之所以 ......