聚合

如果一个类有一个类的实体引用(类中的类),则它称为聚合。 聚合表示HAS-A关系。

考虑有一种情况,Employee对象包含许多信息,例如:id,name,emailId等。它包含另一个类对象:address,其包含它自己的信息,例如:城市,州,国家,邮政编码等,如下所示。

class Employee{

int id;

String name;

Address address;//Address is a class

...

}

在这种情况下,Employee有一个实体引用地址(Address),因此关系是:Employee HAS-A Address。

为什么要使用聚合?代码可重用性。

聚合的简单示例

在这个例子中,在Circle类中创建了Operation类的引用。

class Operation {

int square(int n) {

return n * n;

}

}

class Circle {

Operation op;// aggregation

double pi = 3.14;

double area(int radius) {

op = new Operation();

int rsquare = op.square(radius);// code reusability (i.e. delegates the

// method call).

return pi * rsquare;

}

public static void main(String args[]) {

Circle c = new Circle();

double result = c.area(5);

System.out.println(result);

}

}

执行上面代码,得到以下结果 -

78.5

何时使用聚合?当没有is-a关系时,通过聚合也能最好地实现代码重用。

只有在所涉及的对象的整个生命周期内维持关系为is-a时,才应使用继承; 否则,聚合是最好的选择。

理解聚合的一个示例

在此示例中,Employee中拥有Address对象,address对象包含其自己的信息,例如城市,州,国家等。在这种情况下,关系是员工(Employee)HAS-A地址(Address)。

Address.java

public class Address {

String city, province;

public Address(String city, String province) {

this.city = city;

this.province = province;

}

}

Emp.java

public class Emp {

int id;

String name;

Address address;

public Emp(int id, String name, Address address) {

this.id = id;

this.name = name;

this.address = address;

}

void display() {

System.out.println(id + " " + name);

System.out.println(address.city + " " + address.province);

}

public static void main(String[] args) {

Address address1 = new Address("广州", "广东");

Address address2 = new Address("海口", "海南");

Emp e = new Emp(111, "Wang", address1);

Emp e2 = new Emp(112, "Zhang", address2);

e.display();

e2.display();

}

}

执行上面代码,得到以下结果 -

111 Wang

广州 广东

112 Zhang

海口 海南

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java 聚合_Java聚合相关推荐

  1. java类的聚合 组合定义_Java里组合和聚合的概念及其实现

    Java里组合和聚合的概念及其实现 (一)概念 组合:组合是整体与部分的关系, 并且部分不可以离开整体而单独存在. 聚合:整体与部分的关系, 并且部分可以离开整体而单独存在. 在实际写代码时: 组合方 ...

  2. ElasticSearch java API - 聚合查询-聚合多字段聚合demo

    以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置. index的mapping为: "mappings": {"pl ...

  3. Elasticsearch 5.x Java api Aggregations(聚合)

    Ealsticsearch 5.x Java API聚合string类型的时候,会报错(json的错),则需要在聚合的string类型字段的后面添加.keyword , 虽然使用watch查看聚合的e ...

  4. java 数据聚合_聚合java

    09[在线日志分析]之基于Spark Streaming Direct方式的WordCount最详细案例(java版) 1.前提 a. flume 收集-->flume 聚合-->kafk ...

  5. Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能

    目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...

  6. es 时间字段聚合_Elasticsearch 聚合(aggregation)查询返回所有

    Elasticsearch做查询的时候,很多情况下,有一些查询满足不了我们的要求,这个时候,我们用Elasticsearch的聚合(aggregation)函数,下面讲讲aggregation的使用姿 ...

  7. 怎样用uml类图生成java类_JAVA:面向对象编程的底层逻辑,深度剖析

    什么是面向对象 在目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法.早期的编程语言如C.Basic.Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现 ...

  8. Composite 聚合——Elasticsearch 聚合后分页新实现

    1.聚合后分页应用场景 在常规检索的基础上,用户期望返回基于特定字段的聚合结果,且用户期望分页查看检索和聚合结果. 如下图所示:以2020东京奥运会热点新闻亚洲飞人"苏炳添"为例, ...

  9. Es Bucket聚合(桶聚合) 第一篇(常用桶聚合一览)

    本篇将开始介绍Elasticsearch Bucket聚合(桶聚合). Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是 ...

最新文章

  1. Pycharm跳转回之前所在的代码行
  2. 电脑断网也难逃黑客攻破!风扇在转,手机放桌上,数据就被隔空窃取了
  3. 引入 ServletContextListener @Autowired null 解决办法
  4. 默认开机启动;通过Broadcastreceiver广播监听开机启动,实现没有activity的自启服务或者自启应用程序。...
  5. CodeForces - 1288C Two Arrays(组合数学)
  6. [如何做研究][如何写论文]
  7. python+ seleniumAPPium自动化 page Object 设计模式
  8. 1030 Travel Plan [Dijkstra]
  9. 基于javaweb+jsp的在线购书商城系统(java+jsp+mysql+servlert+ajax)
  10. matlab qam调制函数,matlab实现16QAM调制解调
  11. 关于数学公式的软件和markdown
  12. 比特大陆IPO之旅即将终结
  13. 粉笔科技创新OMO一体化模式 差异化突围职教市场
  14. 三大微分中值定理与两大积分中值定理
  15. Maya角色UV展平技巧笔记
  16. 键盘按键与键码的对照表的对照表
  17. Nature子刊:AI技术从零开始设计具有生物活性的蛋白质
  18. 有没有可以测试充电宝电流电压的软件,USB充电电流/电压检测仪USB电流和电压测试仪移动电源测试...
  19. 2020前端学习路线收集整理
  20. 梯度提升树(GBDT)算法超详细版本

热门文章

  1. java解码_Java数组已排序解码
  2. java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)
  3. jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server
  4. drools。drools_使用Drools跟踪输出
  5. java ssh客户端_简单的Java SSH客户端
  6. hibernate脏数据_Hibernate脏检查的剖析
  7. unity ppr_智能自动PPR更改事件策略
  8. 谷歌guava_Google Guava MultiMaps
  9. 确定活动的热点垃圾收集器
  10. jit即时编译_热点中的即时编译器(JIT)