练习代码(八)对象的集合(一)
来源:互联网 发布:linux nslookup mx 编辑:程序博客网 时间:2024/06/05 21:11
1.封装改写一下Arrays类。
package second;
public interface Generator {
Object next();
}
package second;
public interface BooleanGenerator {
boolean next();
}
package second;
public interface ByteGenerator {
byte next();
}
package second;
public interface CharGenerator {
char next();
}
package second;
public interface DoubleGenerator {
double next();
}
package second;
public interface FloatGenerator {
float next();
}
package second;
public interface IntGenerator {
int next();
}
package second;
public interface LongGenerator {
long next();
}
package second;
public interface ShortGenerator {
short next();
}
在Arrays2类中实现:
package second;
import java.util.Random;
public class Arrays2 {
//定义8种基本类型的数组遍历.
public static String toString(boolean[] n) {
StringBuffer results = new StringBuffer(“[“); // 此时创建了一个对象
// String s = new String(“abc”); 此时创建了两个对象
for (int i = 0; i < n.length; i++) {
results.append(n[i]); // 使用StringBuffer类的append()方法添加元素
if (i < n.length - 1)
results.append(“,”);
}
results.append(“]”);
return results.toString(); // 将StringBuffer类转化成String类
}
public static String toString(byte[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(char[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(short[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(int[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(long[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(float[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }public static String toString(double[] n) { StringBuffer results = new StringBuffer("["); for (int i = 0; i < n.length; i++) { results.append(n[i]); if (i < n.length - 1) results.append(","); } results.append("]"); return results.toString(); }private static Random r = new Random();
//重新定义fill()方法,使它可以不再单一赋值.
//String类型public static void fill(Object[] a , Generator gen ){ fill(a,0,a.length,gen);}public static void fill(Object[] a, int from, int to, Generator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandStringGenerator implements Generator{ private int len; private RandCharGenerator cg = new RandCharGenerator(); public RandStringGenerator(int length){ len = length; } @Override public Object next() { // TODO Auto-generated method stub char[] c = new char[len]; for(int i = 0; i < len; i++) c[i] = cg.next(); return new String(c); }}//Boolean类型public static void fill(boolean[] a , BooleanGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(boolean[] a, int from, int to, BooleanGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandBooleanGenerator implements BooleanGenerator{ @Override public boolean next() { // TODO Auto-generated method stub return r.nextBoolean(); }}//Byte类型public static void fill(byte[] a , ByteGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(byte[] a, int from, int to, ByteGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandByteGenerator implements ByteGenerator{ @Override public byte next() { // TODO Auto-generated method stub return (byte)r.nextInt(); }}//Char类型public static void fill(char[] a , CharGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(char[] a, int from, int to, CharGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}private static String ssource = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";private static char[] src = ssource.toCharArray();public static class RandCharGenerator implements CharGenerator{ @Override public char next() { // TODO Auto-generated method stub return src[r.nextInt(src.length)]; }}//Short类型public static void fill(short[] a , ShortGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(short[] a, int from, int to, ShortGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandShortGenerator implements ShortGenerator{ @Override public short next() { // TODO Auto-generated method stub return (short)r.nextInt(); }}//Int类型public static void fill(int[] a , IntGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(int[] a, int from, int to, IntGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandIntGenerator implements IntGenerator{ private int mod = 10000; public RandIntGenerator(){} public RandIntGenerator(int modulo){ mod = modulo; } @Override public int next() { // TODO Auto-generated method stub return r.nextInt(mod); }}//Long类型public static void fill(long[] a , LongGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(long[] a, int from, int to, LongGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandLongGenerator implements LongGenerator{ @Override public long next() { // TODO Auto-generated method stub return (long)r.nextInt(); }}//Float类型public static void fill(float[] a , FloatGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(float[] a, int from, int to, FloatGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandFloatGenerator implements FloatGenerator{ @Override public float next() { // TODO Auto-generated method stub return (float)r.nextInt(); }}//Doouble类型public static void fill(double[] a , DoubleGenerator gen ){ fill(a,0,a.length,gen);}public static void fill(double[] a, int from, int to, DoubleGenerator gen){ for(int i = from;i<to;i++){ a[i] = gen.next(); }}public static class RandDoubleGenerator implements DoubleGenerator{ @Override public double next() { // TODO Auto-generated method stub return (double)r.nextInt(); }}
}
2.测试封装的Arrays2类。
package first;
import java.util.Arrays;
import second.Arrays2;;
public class TestArrays2 {
public static void main(String[] args) { int size = 6; if(args.length != 0) size = Integer.parseInt(args[0]); if(size < 3){ System.out.println("arg must be >= 3"); System.exit(1); } //定义基本类型数组 boolean[] a1 = new boolean[size]; byte[] a2 = new byte[size]; char[] a3 = new char[size]; short[] a4 = new short[size]; int[] a5 = new int[size]; long[] a6 = new long[size]; float[] a7 = new float[size]; double[] a8 = new double[size]; //填充基本类型数组,并输出. Arrays2.fill(a1, new Arrays2.RandBooleanGenerator()); System.out.println(Arrays2.toString(a1)); Arrays2.fill(a2, new Arrays2.RandByteGenerator()); System.out.println(Arrays2.toString(a2)); Arrays2.fill(a3, new Arrays2.RandCharGenerator()); System.out.println(Arrays2.toString(a3)); Arrays2.fill(a4, new Arrays2.RandShortGenerator()); System.out.println(Arrays2.toString(a4)); Arrays2.fill(a5, new Arrays2.RandIntGenerator()); System.out.println(Arrays2.toString(a5)); Arrays2.fill(a6, new Arrays2.RandLongGenerator()); System.out.println(Arrays2.toString(a6)); Arrays2.fill(a7, new Arrays2.RandFloatGenerator()); System.out.println(Arrays2.toString(a7)); Arrays2.fill(a8, new Arrays2.RandDoubleGenerator()); System.out.println(Arrays2.toString(a8)); //调用Arrays类的sort()方法对数组进行排序. Arrays.sort(a5); System.out.println("排序后:"+Arrays2.toString(a5));}
}
3.数组的比较。
package first;
import java.util.Arrays;
public class CompairArrays {
public static void main(String[] args){ String[] s1 = new String[5]; Arrays.fill(s1, "hi"); String[] s2 = {"hi","hi","hi","hi","hi"}; System.out.println(s1==s2); // == 比较的是对象的引用 System.out.println(Arrays.equals(s1,s2)); // equals 比较的是对象}
}
4.数组的复制。
package first;
import java.util.Arrays;
class Arrays2 {
public static String toString(int[] n) { StringBuffer results = new StringBuffer("["); // 此时创建了一个对象
// String s = new String(“abc”); 此时创建了两个对象
for (int i = 0; i < n.length; i++) {
results.append(n[i]); // 使用StringBuffer类的append()方法添加元素
if (i < n.length - 1)
results.append(“,”);
}
results.append(“]”);
return results.toString(); // 将StringBuffer类转化成String类
}
}
public class CopyingArrays {
public static void main(String[] args) { // 基本类型数组 // 定义两个数组,并用Arrays类中的fill()方法填充数组. int[] i = new int[7]; int[] j = new int[10]; Arrays.fill(i, 47); Arrays.fill(j, 97); // 调用Arrays2类中的toString()方法输出数组. System.out.println(Arrays2.toString(i)); System.out.println(Arrays2.toString(j)); // 调用Java标准类库中static System.arraycopy()方法,来复制数组. System.arraycopy(i, 0, j, 0, i.length); System.out.println(Arrays2.toString(j)); int[] k = new int[5]; Arrays.fill(k, 105); System.arraycopy(i, 0, k, 0, k.length); System.out.println(Arrays2.toString(k)); Arrays.fill(k, 105); System.arraycopy(k, 0, i, 2, k.length); System.out.println(Arrays2.toString(i)); // 对象数组 // 调用Arrays.asList()方法将数组转化成List容器. Integer[] u = new Integer[10]; Integer[] v = new Integer[5]; Arrays.fill(u, new Integer(23)); Arrays.fill(v, new Integer(86)); System.out.println(Arrays.asList(u)); System.out.println(Arrays.asList(v)); System.arraycopy(v, 0, u, 0, v.length); System.out.println(Arrays.asList(u));}
}
5.返回一个数组并输出。
package first;
import java.util.Random;
public class IceCream {
public static final String[] flavors = { "a", "b", "c", "d", "e", "f", "g","h" };private static Random r = new Random();public static String[] flavorSet(int n) { String[] results = new String[n]; boolean[] b = new boolean[flavors.length]; for (int i = 0; i < n; i++) { int t; do t = r.nextInt(flavors.length); while (b[t]); results[i] = flavors[t]; b[t] = true; } return results;}public static void main(String[] args){ for(int i = 0; i < 20; i++){ System.out.println("flavorSet("+i+")="); String[] fl = flavorSet(flavors.length); for(int j = 0; j < fl.length; j++){ System.out.println("\t"+fl[j]); } }}
}
- 练习代码(八)对象的集合(一)
- 练习代码(八)对象的集合(二)
- 学习笔记(八)对象的集合(一)
- JSP代码练习(八)
- 学习笔记(八)对象的集合(二)
- 学习笔记(八)对象的集合(三)
- sdut 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- SDUTACM 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 面向对象程序设计上机练习八(对象数组)
- 集合
- 宠物美容师培训学校哪里最好
- java 文档注释
- 黑马程序员——泛型
- sql语句
- 练习代码(八)对象的集合(一)
- OSGi控制台在Eclipse插件开发中的妙用
- 多态
- Leetcode34 Search for a Range
- 使用第三方 签章 时碰到的问题
- python时间函数和常用格式化
- HDOJ 取石子游戏 1527【威佐夫博奕】
- 第三周第二天( 【Class类与Java反射 】 【Method类的常用方法 】 【注解】)
- Failed to install *.apk on device 'emulator-5554': timeout