为什么我们需要一个TreeMap中/ TreeSet中,当我们有SortedMap的/ SortedSet的?
2016-07-28 11:32
459 查看
1.接口不提供任何函数,它们只是定义在它提供的术语类的大致profile。但里面没有代码
而作为事实上,你经常可以有多种方式来实现函数。想想接口
往往不够,但是,开发人员并不真正关心细节 CodeGo.net,只要他们知道他们可以存放物品在一组,并检索它们。这个基本的想法,但不知道如何去实现它,是由接口定义。 这也是你不能实例化一个接口的原因。如果您尝试以下操作:
这就是“SortedSet的”并没有真正意识到了一套本身,它只是定义了一个有序集合的一个必须条件提供 下面是一个人为的例子。想象一下,你想提供一个函数正整数的集合中的百分比。你可以定义
在这里,你真的不关心是否给你一个
因此,签名只要求一
我有一个实例
:-( 在这个意义上,一个接口就好像是超一流的,它定义了所有的类都必须有它。但它并没有提供任何函数本身。 要回到你原来的例子
思路适用于
2. 正确的,我们需要的接口,当我们有课。
3.
4. 答案是你的问题;
你的代码来介面好的OOP设计实践,而不是所有的签名应该是指接口而不是类。 所以,你会怎么做:
而不是 对象squishObjects(TreeMap中映射); 这样一来,如果有更好的
SortedMap/
SortedSet那如何真正实现这一函数。
而作为事实上,你经常可以有多种方式来实现函数。想想接口
java.util.Set:你可以把它作为一个
TreeSet也可作为
HashSet。通常情况下,有不同的HashSet的权衡可能提供平均更快的访问,而树集可能是在保持其项目的顺序更好。
往往不够,但是,开发人员并不真正关心细节 CodeGo.net,只要他们知道他们可以存放物品在一组,并检索它们。这个基本的想法,但不知道如何去实现它,是由接口定义。 这也是你不能实例化一个接口的原因。如果您尝试以下操作:
SortedSet<Integer> set = new SortedSet<Integer>();
这就是“SortedSet的”并没有真正意识到了一套本身,它只是定义了一个有序集合的一个必须条件提供 下面是一个人为的例子。想象一下,你想提供一个函数正整数的集合中的百分比。你可以定义
public double getPercentageOfPositives(Set<Integer> set) { if (set.size() == 0) { return 0.0; } int count = 0; for (Iterator<Integer> iter = set.iterator(); iter.hasNext();) { if (iter.next() > 0) count++; } return 100.0 * count / set.size(); }
在这里,你真的不关心是否给你一个
TreeSet或
HashSet。这并不重要原则render你只是调用
size()方法和
iterator()方法反正。所有你需要的是一个事实,即任何一组都将具有这些接口给你,
因此,签名只要求一
Set,这是定义所有的类必须提供(其中包括)一个接口
size()和
iterator()方法。如果你写的是这样的:
public double getPercentageOfPositives(SortedSet<Integer> set) { ... }
我有一个实例
HashSet然后我忍不住“即使
HashSet提供
size()和
iterator()为好。
:-( 在这个意义上,一个接口就好像是超一流的,它定义了所有的类都必须有它。但它并没有提供任何函数本身。 要回到你原来的例子
SortedSet:这个接口不提供任何函数。定义了一个有序set必须提供。
TreeSet是这样的
思路适用于
SortedMap。
2. 正确的,我们需要的接口,当我们有课。
SortedMap和
SortedSet定义函数,它是用树
TreeMap和
TreeSet。
3.
SortedMap/
SortedSet界面,所以你不能实例化它们。
TreeMap/
TreeSet是类和可实例化的原因,为什么我们需要
SortedMap/
SortedSet是,有可能比Sun的基于树的人除外。
4. 答案是你的问题;
SortedMap和
SortedSet是接口。他们和属性,但他们实际上没有他们,所以他们不提供任何函数。
TreeMap和
TreeSet这些接口。
你的代码来介面好的OOP设计实践,而不是所有的签名应该是指接口而不是类。 所以,你会怎么做:
Object squishObjects(SortedMap map);
而不是 对象squishObjects(TreeMap中映射); 这样一来,如果有更好的
SortedMap同时,你可以切换,在,而不必修改所有这一切依赖于
TreeMap。
相关文章推荐
- C# DEV,treelist,实现分层及TreeList常用用法
- 位向量表示法
- 【nginx】App打点场景下,用nginx的log捕获http协议的$request_body的正确方法
- javaweb学习总结(八)——HttpServletResponse对象(二)
- JSON与XML的区别比较
- mongoDB 简单操作
- 设置 Linux 的 LD_LIBRARY_PATH 变量
- java使用接口进行数据传递
- HDU 1254 推箱子 (搜索中套搜索,BFS + DFS 这感觉,酸爽!)
- C#未将对象引用设置到对象的实例
- 【HDU】3081 Marriage Match II
- 仿ios右滑销毁activity
- 悖论的研究
- 《软件测试技术》课程
- 浏览器不支持JavaScript怎么办
- 基础总结篇之二:Activity的四种launchMode
- HDU1171
- linux 查看并发
- Java之反射及1.5新特性
- try catch