学习java comparable特性时候,定义如下Student类,需要需要随机添加学生姓名以及学号和成绩,这是java如何随机生成名字,根据我的查询,我找到目前java库支持两种方法。

1. org.apache.commons.lang3.RandomStringUtils类,他支持方法可以到RandomStringUtils查询,其中有一个方法:

public static java.lang.String random(int count,
int start,
int end,
boolean letters,
boolean numbers)

这个方法有多个重载,我们采用以上函数,count参数表示生成字串长度,start,end表示ASCII码列表中选取字符开始和结束位置,布尔型数据letters表示alphabet是否出现,numbers表示数字是否出现。

            tmpName = RandomStringUtils.random(10, 20, 110, true, true);
System.out.println("Name generated randomly: " + tmpName);

我们可以修改函数参数参数,调用不同函数实现不同功能,例如只输出字母后者仅仅输出数字。

附注:

java中支持生成UUID,UUID一共128位bit,通过太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,生成在一个时间系统里面独一无二的标识,所以我们可以使用他来生成数据库主键,例如:

            valkey = UUID.randomUUID().toString();

以上两种语言应用实例如下:

import java.util.*;

import org.apache.commons.lang3.RandomStringUtils;

/**
* Created by carl on 11/7/15.
*/
class Student implements Comparable<Student> {
private String name;
private String key;
private float score;
private int age; public Student(String key, String name, float score, int age) {
this.key = key;
this.name = name;
this.score = score;
this.age = age;
} @Override
/*
public int compareTo(Student ano) {
if (this.score < ano.score)
return -1;
if (this.score > ano.score)
return 1;
else {
if (this.age > ano.age)
return 1;
if (this.age < ano.age)
return -1;
else
return 0;
}//else
}//compareTo
*/
public int compareTo(Student ano){
return (int)(this.score - ano.score);
} public static List<Student> getStudents(){ List<Student> col = new ArrayList<Student>(); Random rand = new Random();
String valkey;
int valAge, valScore;
String valName;
for (int i = 0; i < 10; i++) {
valkey = UUID.randomUUID().toString();
valName = RandomStringUtils.random(10, 20, 110, true, true);
valAge = rand.nextInt(80);
valScore = rand.nextInt(80);
col.add(new Student(valkey,valName, valAge, valScore));
} return col;
} public String getName(){
return name;
} public float getScore() {
return score;
} public int getAge() {
return age;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", key='" + key + '\'' +
", score=" + score +
", age=" + age +
'}';
}
}//Student public class ClassSort {
public static void main(String []args) {
//Student stu1 = new Student("wen", 90, 17);
//Student stu2 = new Student("mike", 90, 18);
//System.out.print("res:" + stu1.compareTo(stu2));
List<Student> grade1 = Student.getStudents();
Iterator<Student> iter = grade1.iterator();
while(iter.hasNext()) {
//iter.next();
System.out.println(iter.next().toString());
}
}
}

最新文章

  1. windows charles response 乱码解决办法
  2. js的一些正则 整理 长期更新
  3. java基础 集合类
  4. [Android]AndroidInject增加sqlite3数据库映射注解(ORM)
  5. 表单提交set集合问题
  6. Hibernate类中集合的映射
  7. RLP编码
  8. android体系架构
  9. Vue.js 2.0 和 React、Augular
  10. (转) Spring读书笔记-----部署我的第一个Spring项目
  11. 查找Mysql数据库连接jar包和对应的Driver和Url
  12. python&amp;MongoDB
  13. Java XML解析器
  14. 购买的wemall 6.0商城系统源码分享
  15. vs编译OpenGL项目,出现无法打开 源 文件 &quot;gl\glaux.h的解决办法
  16. 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)
  17. Vue音乐项目笔记(四)(搜索页面提取重写)
  18. P1771 方程的解_NOI导刊2010提高(01)
  19. mysql高可用架构 -&gt; MHA简介-01
  20. JS调用百度地图API标记地点

热门文章

  1. [置顶] ios App 中嵌入应用商店
  2. MySQL学习笔记(4)
  3. SQL学习之去重复查询
  4. 未能找到类型名称&quot;MembershipProvider&quot;
  5. log4j 详解
  6. c++ 文件读写(转)
  7. C++_基础_C与C++的区别2
  8. 将单链表的每K个节点之间逆序
  9. Word2Vec在Tensorflow上的版本以及与Gensim之间的运行对比
  10. css 样式