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

这一章节我们结束还有一种填充容器的方式: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. bzoj 1061~1065【Noi2008】解题报告

    这次Noi好像格外喜欢树形DpQAQ P.S.好像这次的题都与图有关QAQ bzoj1061[Noi2008]志愿者招募:上下界可行最小费用流 bzoj1062[Noi2008]糖果雨:数形结合&am ...

  2. How to resolve mysql problem when you get code 2003(10061) and 1130

    When I use Navicate to connect to mysql on Ubuntu, I got message 2003(10061) firstly. To resovle thi ...

  3. @login_required用法简介

    在django项目中,经常会看到下面这样的代码: from django.contrib.auth.decorators import login_required @login_required d ...

  4. [LeetCode] Edit Distance 字符串变换为另一字符串动态规划

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  5. 机器人操作系统ROS Indigo 入门学习(1)——安装ROS Indigo【转】

    转自:http://blog.csdn.net/bobsweetie/article/details/43638761 Ubuntu14.04安装ROS Indigo 一.安装ROS 1.1配置Ubu ...

  6. AC日记——[SCOI2010]幸运数字 bzoj 1853

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2405  Solved: 887[Submit][Status] ...

  7. 咦?Oracle归档文件存哪了?

    实验环境:RHEL 5.4 + Oracle 11.2.0.3 现象:日志切换后没找到归档日志目录. 1.查看归档日志路径 2.日志切换后并未找到归档目录 3.创建归档目录后再次观察 引申知识 1.查 ...

  8. 554 DT:SPM 163 smtp5,D9GowAD3RPYqSvxZjpMaAA--.4817S2 1509706293 坑爹的防垃圾邮件机制

    代码如下 package ssmtest; import java.io.File;import java.io.UnsupportedEncodingException;import java.ut ...

  9. 类加载器在加载类 的时候就已经对类的static代码块和static变量进行了初始化

    类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导 ...

  10. TdxBarButton的FASTSCRIPT封装

    TdxBarButton的FASTSCRIPT封装 // cxg 2017-2-13 unit fs_dev; interface{$i fs.inc}uses fs_iinterpreter, fs ...