接着上一章节,我们继续介绍填充容器。

这一章节我们结束还有一种填充容器的方式:addAll

样例:

package com.ray.ch15;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet; public class Test {
public static void main(String[] args) {
MyCollection<String> myCollection = new MyCollection<String>(
new MyGenerator(), 25);//在构造器填充
System.out.println(Arrays.toString(myCollection.toArray()));
LinkedHashSet<String> set = new LinkedHashSet<String>(myCollection);
System.out.println(Arrays.toString(set.toArray()));
set.clear();
set.addAll(myCollection);//还有一种方式
System.out.println(Arrays.toString(set.toArray()));
}
} interface Generator<T> {
T next();
} class MyCollection<T> extends ArrayList<T> {
private static final long serialVersionUID = 1L; public MyCollection(Generator<T> generator, int count) {
for (int i = 0; i < count; i++) {
add(generator.next());
}
}
} class MyGenerator implements Generator<String> { private String strPool = "The annual expansion rate for "
+ "industrial output will be around 6 percent this year, "
+ "well below this year's GDP growth, which is likely to be "
+ "about 7 percent, the Ministry of Industry and Information "
+ "Technology said, adding that such a situation was happening "
+ "for the first time in nearly two decades."; private int index = 0; @Override
public String next() {
return strPool.split(" ")[index++];
}
}

输出:

[The, annual, expansion, rate, for, industrial, output, will, be, around]
[The, annual, expansion, rate, for, industrial, output, will, be, around]
[The, annual, expansion, rate, for, industrial, output, will, be, around]

我来解释一下上面的代码。有几个须要注意的地方:

(1)上面继续前几个篇幅所提到的生成器,我们通过泛型生成器来生成相关的对象。

这样的方式创建的对象具备灵活性,不像系统提供的nCopy方法,仅仅能创建单一的对象。

(2)创建一个自己的容器(继承Arraylist),它是用来装载生成器创建的对象,继承某个容器,能够方便的在构造器里面调用add方法。也具备容器的特性

(3)在main方法里面展现了两种填充容器的方式,一个是直接在构造器里面加入,一个是使用addAll方法,这两种方法都是接收Collection类型的容器,因此我们不管生成什么的容器,都能够add进去。

总结:这一章节展现了还有一种填充容器的方式。

这一章节就到这里,谢谢。

-----------------------------------

文件夹

从头认识java-15.1 填充容器(2)-利用Collection的addAll方式的更多相关文章

  1. 从头认识java-15.1 填充容器(1)-利用Collection构造器的方式

    这一章节我们来介绍一下填充容器. 就像数组一样,Arrays.fill是填充方法,在容器里面也有. 1.Collections.nCopies 这种方法是生成某种类型多少个对象,然后我们能够把他放到容 ...

  2. 从头认识java-15.1 填充容器(3)-填充Map

    这一章节我们来讨论一下填充容器的还有一个方面Map.之前的两个章节我们都是用list来作为容器.这一章节我们使用Map. 还有在这里解释一下为什么一直都使用生成器这个东西,事实上他就是建造者设计模式, ...

  3. Java基础 -- 持有对象(容器)

    一 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 Class clazz; 也可以通过数组来持有多个对象,如 Class[] ...

  4. 聊聊并发-Java中的Copy-On-Write容器

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp78   聊聊并发-Java中的Copy-On-Write容器   Cop ...

  5. 由Java 15废弃偏向锁,谈谈Java Synchronized 的锁机制

    Java 15 废弃偏向锁 JDK 15已经在2020年9月15日发布,详情见 JDK 15 官方计划.其中有一项更新是废弃偏向锁,官方的详细说明在:JEP 374: Disable and Depr ...

  6. Java学习笔记--常用容器

    容器 1. 出现原因 解决程序运行时需要创建新对象,在程序运行前不知道运行的所需的对象数量甚至是类型的问题. Java中提供了一套集合类来解决这些问题包括:List.Set.Queue.Map 2. ...

  7. Java:常用的容器小记

    Java:常用的容器小记 对 Java 中的 常用容器,做一个微不足道的小小小小记 容器类概述 常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 M ...

  8. Java Servlet与Web容器之间的关系

    自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...

  9. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

    经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...

随机推荐

  1. spring中MessageSource的配置使用方法1

    Spring定义了访问国际化信息的MessageSource接口,并提供了几个易用的实现类.首先来了解一下该接口的几个重要方法:  String getMessage(String code, Ob ...

  2. linux监控平台搭建-磁盘

    linux监控平台搭建-磁盘 磁盘:随着大数据快速发展.人工智能.自动化.云平台.数据量指数的增长.磁盘的使用量也在增长.目前的机器基本上采用SSD或者SATA盘,一直有人比较那个好.会不会使用时间短 ...

  3. Red is good(bzoj 1419)

    Description 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. Input 一 ...

  4. POJ4007 Flood-it!

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 337   Accepted: 123 Description Flood ...

  5. 【CF1028B】Unnatural Conditions(构造)

    题意:给定n与m,要求构造两个长度不超过2230的数字x,y使得x,y各自的数位和>=n,x+y的数位和<=n 思路: #include<cstdio> #include< ...

  6. 【HDOJ6224】Legends of the Three Kingdoms(概率DP)

    题意:三国杀,给定4个白板武将的血量,4个角色轮流行动,每回合行动时如果该人存活则可以选择使阵营不同的角色血量-1,血量为0则死亡.每个人按自己获胜概率最大化行动,如果有多种方案概率相同则等概率选择这 ...

  7. 致命错误:ext/standard/php_smart_str.h:没有那个文件或目录

    致命错误:ext/standard/php_smart_str.h:没有那个文件或目录 参考文章:https://blog.csdn.net/jartins/article/details/80371 ...

  8. yii model层操作总结

    yii model层操作属性和方法总结. tableName – 设置Model所对应的表名,例如: public function tableName(){return 'gshop_order_e ...

  9. 微信小程序 使用HMACSHA1和md5为登陆注册报文添加指纹验证签名

    对接口请求报文作指纹验证签名相信在开发中经常碰到, 这次在与java后端一起开发小程序时,就碰到需求对登陆注册请求报文添加指纹验证签名来防止信息被修改 先来看下我们与后端定制签名规则 2.4. 签名规 ...

  10. 最简单的window下使用Jenkins来做自动化部署的教程

    今天我们来说一下,如何使用Jenkins+powershell脚本,将我们的.NET CORE的脚本部署到对应的服务器上. 这里我们使用的源码管理工具是TFS.虽然源码管理器比较老旧,但是原理都差不多 ...