【ThinkingInJava】44、数据生成器

<pre name="code" class="java">//: net/mindview/util/Generator.java
// A generic interface.
package net.mindview.util;
public interface Generator<T> { T next(); } ///:~
/**
* 书本:《Thinking In Java》
* 功能:数据生成器--策略设计模式
* 文件:CountingGenerator.java
* 时间:2015年4月29日19:05:09
* 作者:cutter_point
*/
package net.mindview.util;

public class CountingGenerator
{
	//一个布尔值的静态类
	public static class Boolean implements Generator<java.lang.Boolean>
	{
		private boolean value = false;

		@Override
		public java.lang.Boolean next()
		{
			//返回一个和value相反的值
			value = !value;
			return value;
		}
	}

	//字节类型的静态类
	public static class Byte implements Generator<java.lang.Byte>
	{
		private byte value = 0;

		@Override
		public java.lang.Byte next()
		{
			//下一个就是加一位,并返回前面那个值
			return value++;
		}
	}

	//静态的字符数组包含所有的字母
	static char[] chars = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

	//字符型的
	public static class Character implements Generator<java.lang.Character>
	{
		int index = -1;	//索引

		@Override//得到一串字符里面的
		public java.lang.Character next()
		{
			index = (index + 1)%chars.length;	//看看下一个字符在所有的字母里面的第几位
			return chars[index];
		}
	}

	//字符串类型
	public static class String implements Generator<java.lang.String>
	{
		private int length = 7;

		Generator<java.lang.Character> cg = new Character();

		public String() {}

		public String(int length) { this.length = length; }

		public java.lang.String next()
		{
			char[] buf = new char[length];
			for(int i = 0; i < length; ++i)
			{
				buf[i] = cg.next();
			}
			return new java.lang.String(buf);
		}
	}

	//short类型的数据
	public static class Short implements Generator<java.lang.Short>
	{
		private short value = 0;

		@Override
		public java.lang.Short next()
		{
			return value++;
		}
	}

	public static class Integer implements Generator<java.lang.Integer>
	{
		private int value = 0;

		@Override
		public java.lang.Integer next()
		{
			return value++;
		}
	}

	public static class Float implements Generator<java.lang.Float>
	{
	    private float value = 0;
	    public java.lang.Float next()
	    {
	      float result = value;
	      value += 1.0;
	      return result;
	    }
	}

	public static class Double implements Generator<java.lang.Double>
	{
		private double value = 0.0;

		public java.lang.Double next()
		{
			double result = value;
			value += 1.0;
			return result;
		}
	}

//	public static void main(java.lang.String[] args)
//	{
//		Byte b = new Byte();
//		int i = b.next();
//		System.out.println(i);
//
//		System.out.println(new Character().next());
//
//		String s = new String(9);
//
//		System.out.println(s.next());
//	}
}

/*** 书本:《Thinking In Java》* 功能:数据生成器--策略设计模式--测试类* 文件:CountingGenerator.java* 时间:2015年4月29日19:05:09* 作者:cutter_point*/package Lesson16Arrays;import net.mindview.util.CountingGenerator;import net.mindview.util.Generator;public class GeneratorsTest{public static
int size = 10;public static void test(Class<?> surroundingClass){for(Class<?> type : surroundingClass.getClasses()) //取得这个类对象里面的类{//取得这个类型的数组System.out.println(type.getSimpleName() + ": ");try{Generator<?> g = (Generator<?>)type.newInstance(); //获取一个实例化对象//输出他的计数for(int
i = 0; i < size; ++i){System.out.printf(g.next() + " ");}System.out.println();}catch (Exception e){e.printStackTrace();}}}public static void main(String[] args){test(CountingGenerator.class);}}


输出:

Boolean:

true false true false true false true false true false

Byte:

0 1 2 3 4 5 6 7 8 9

Character:

a b c d e f g h i j

Double:

0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

Float:

0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

Integer:

0 1 2 3 4 5 6 7 8 9

Short:

0 1 2 3 4 5 6 7 8 9

String:

abcdefg hijklmn opqrstu vwxyzAB CDEFGHI JKLMNOP QRSTUVW XYZabcd efghijk lmnopqr

时间: 2024-10-11 21:22:06

【ThinkingInJava】44、数据生成器的相关文章

[数据生成器]UVA10054 The Necklace

应吴老师之邀,写了个数据生成器. 目前这个数据生成器可以保证生成的数据都是合法的,且效率也还不错.只是在建立普通连通图的时候zyy偷懒了,直接把所有点串起来从而保证图的连通.如果有大神有更好的方法请不吝指教,zyy不胜感谢~~ 下面是代码: 1 #include<cstdio> 2 #include<ctime> 3 #include<cstring> 4 #include<cstdlib> 5 #include<cmath> 6 #includ

[CF787D]遗产(Legacy)-线段树-优化Dijkstra(内含数据生成器)

Problem 遗产 题目大意 给出一个带权有向图,有三种操作: 1.u->v添加一条权值为w的边 2.区间[l,r]->v添加权值为w的边 3.v->区间[l,r]添加权值为w的边 求st点到每个点的最短路 Solution 首先我们思考到,若是每次对于l,r区间内的每一个点都执行一次加边操作,不仅耗时还耗空间. 那么我们要想到一个办法去优化它.一看到lr区间,我们就会想到线段树对吧. 没错啦这题就是用线段树去优化它. 首先我们建一棵线段树,然后很容易想到,我们只需要把这一棵线段树当做

前端模拟数据生成器

摘要: ?随着用户体验的重要性越来越高,目前前端和后台的解耦已经越来越明显了,这也加大了前后端的配合工作.在前端开发过程中可能我们需要一些后台返回的数据来完成交互效果,但是后台开发人员并没有完成后台功能,此时我们只能等,但是这样必然影响了开发进度,浪费了时间.有很多种解决方法,如果后端解决的话,那就是先定义接口,然后将假数据直接返回.如果在前端解决的话,前端搭建自己的服务,不依赖后端.作为前端工程师,今天我分享下另一种前端解决方案,mock服务. 简介: Mock.js 是一款模拟数据生成器,旨

c++随机数据生成器

这是随机数据生成器,可以在noi上检测...... #include<iostream> #include<time.h> #include<cstdio> #include<stdlib.h> using namespace std; int main() { freopen("random.txt","w",stdout); long long a,b,n,cou;//cou:数据个数:  cin>>a

【BZOJ3671】【NOI2014】随机数据生成器(贪心)

[BZOJ3671][NOI2014]随机数据生成器(贪心) 题面 BZOJ 题解 前面的模拟 真的就是语文阅读理解题目 理解清楚题目意思 然后就会发现要求的就是一个贪心 从小往大枚举,检查当前数能不能选 如果能选 就会限制其他行的左右能够到达的范围 暴力修改一下 然后就很愉快的\(AC\)了 这题别的不卡 卡空间,卡格式 我也是醉了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cs

Keras用动态数据生成器(DataGenerator)和fitgenerator动态训练模型

  最近做Kaggle的图像分类比赛:RSNA Intracranial Hemorrhage Detection (https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/overview)以及阅读Yolov3 源码的时候接触到深度学习训练时一个有趣的技巧,那就是构造生成器generator 并且用Keras 的fit_generator来批量生成数据,释放内存,该方法适合于大规模数据集的训练.一个DataGenerato

[BZOJ1455]罗马游戏-斜堆/左偏树-并查集(+数据生成器)

Problem 遗产 题目大意 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻.他决定玩这样一个游戏. 它可以发两种命令: 1. Merger(i, j).把i所在的团和j所在的团合并成一个团.如果i, j有一个人是死人,那么就忽略该命令. 2. Kill(i).把i所在的团里面得分最低的人杀死.如果i这个人已经死了,这条命令就忽略. 皇帝希望他每发布一条kill命令

Faker:Python的伪造数据生成器

Faker是一个可以让你生成伪造数据的Python包.当你需要初始化数据库,创建美观的XML文档,不断产生数据来进行压力测试或者想从生产服务器上拉取匿名数据的时候,Faker将是你最棒的选择. 安装: pip install fake-factory 示例: from faker import Factory     fake = Factory.create()       # OR     from faker import Faker     fake = Faker()       fa

popStar机机对战数据生成器代码(C#)

代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace game1