为什么我们需要一个TreeMap中/ TreeSet中,当我们有SortedMap的/ SortedSet的?

1.接口不提供任何函数,它们只是定义在它提供的术语类的大致profile。但里面没有代码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();
}
在这里,你真的不关心是否给你一个TreeSetHashSet。这并不重要原则render你只是调用size()方法和iterator()方法反正。所有你需要的是一个事实,即任何一组都将具有这些接口给你, 因此,签名只要求一Set,这是定义所有的类必须提供(其中包括)一个接口size()iterator()方法。如果你写的是这样的:
public double getPercentageOfPositives(SortedSet<Integer> set) {
 ...
}
我有一个实例HashSet然后我忍不住“即使HashSet提供size()iterator()为好。 :-( 在这个意义上,一个接口就好像是超一流的,它定义了所有的类都必须有它。但它并没有提供任何函数本身。 要回到你原来的例子SortedSet:这个接口不提供任何函数。定义了一个有序set必须提供。TreeSet是这样的 思路适用于SortedMap。 
2. 正确的,我们需要的接口,当我们有课。SortedMapSortedSet定义函数,它是用树TreeMapTreeSet。 
3. SortedMap/SortedSet界面,所以你不能实例化它们。TreeMap/TreeSet是类和可实例化的原因,为什么我们需要SortedMap/SortedSet是,有可能比Sun的基于树的人除外。 
4. 答案是你的问题;SortedMapSortedSet是接口。他们和属性,但他们实际上没有他们,所以他们不提供任何函数。TreeMapTreeSet这些接口。 你的代码来介面好的OOP设计实践,而不是所有的签名应该是指接口而不是类。 所以,你会怎么做:
Object squishObjects(SortedMap map);
而不是 对象squishObjects(TreeMap中映射); 这样一来,如果有更好的SortedMap同时,你可以切换,在,而不必修改所有这一切依赖于TreeMap
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值