第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10;

分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判断生成的字符串是否包含重复,在判断长度是不是10,等等.

*2.其实这题我们可以培养一个习惯,大问题分解小问题解决.

(1).10个字符串,我们先产生一个10个字符不重复的字符串,

(2).怎么去重复呢?集合中的HashSet就可以,这题不适合用包含方法做,代码复杂

(3).字符组成是由(a-zA-Z0-9)  难道我们在随机他们的码表一一判断吗?-------->可以把们放到一个容器中ArrayList 在集合的随机索引

第一步:先搞一个集合存储要随机的数据

public static ArrayListgetContainer(){//建立一个容器存放

ArrayList array = new ArrayList<>();//通过for循环一一存储到集合中

for (char i = 'a'; i <='z'; i++) {

array.add(i);

}for (char i = 'A'; i <='Z'; i++) {

array.add(i);

}for (char i = '0'; i <='9'; i++) {

array.add(i);

}returnarray;

}

第二步:产生一个字符串,其字符不相同

public static String getRandomString(ArrayListarrayList){//用hashset接收字符 这样就不会产生重复

HashSet characters = new HashSet<>();//字符串长度为10

while(characters.size()<10){//在字符容器中随机拿字符 先随机索引

int index = (int) (Math.random()*arrayList.size());//添加到hashset集合中

characters.add(arrayList.get(index));

}//遍历hashset集合 连接成字符串

String string="";for(Character character : characters) {//""加字符 转换成字符串这是基础语法,不知道的同学要研究一个基础语法了

string+=character;

}//返回字符串

returnstring;

}

第三步:和第一步一样了,调用N次第二步方法,10个不重复字符串就好了

public static ArrayList getRandomStrings(ArrayListarrayList){//建立HashSet集合接收 去掉重复

HashSet hashSet = new HashSet<>();while(hashSet.size()<10){

hashSet.add(getRandomString(arrayList));

}

ArrayList list = new ArrayList<>();//将Hashset集合中的元素全部添加到list集合中

list.addAll(hashSet);returnlist;

}

最后mian方法调用

public static voidmain(String[] args) {

ArrayList arrayList =getContainer();

ArrayList arrayList2 =getRandomStrings(arrayList);//遍历

for(String string : arrayList2) {

System.out.println(string);

}

}

第二题:我们玩一个随机0-9组成一个8位不重复数字的字符串.产生4个这样的字符串,也是互相不重复的

分析:*1.我们先产生一个0-9组成的字符串

(1).第一种方式:hashSet

(2):第二种方式:StringBulider  想想这个怎么用

*2.在产生多个

1.产生一个字符串

public staticString getRandomString(){//HashSet存储不重复的数

HashSet characters = new HashSet<>();//长度为8

while(characters.size()<8){//这个只要随机0-9就好了

int number = (int) (Math.random()*9);//强制类型转换

char ch = (char)number;

characters.add(ch);

}

String string="";for(Character character : characters) {

string+=character;

}returnstring;

}

第二种方式用StringBuilder做

public staticString getRandomStringBulider(){//先定一个StringBulider

StringBuilder builder = newStringBuilder();//也是一样判断长度位8 停止循环

while(builder.length()<8){//产生随机数

int number = (int) (Math.random()*9);//StringBuilder中没有包含的方法 我们可以转成String做--> builder.toString()

if(!builder.toString().contains(number+"")){

builder.append(number);

}

}returnbuilder.toString();

}

2.4个不重复的字符串

public static HashSetgetRandomStrings(){//HashSet存储不重复的字符串

HashSet hashSet =new HashSet<>();while(hashSet.size()<4){

hashSet.add(getRandomStringBulider());

}returnhashSet;

}

最后 main方法调用,这里我们加一个玩法用map集合玩一个超市货物的编号与品名对应

public static voidmain(String[] args) {

String[] str= {"可乐","啤酒","烤鸭","苍老师"};

Map map =new LinkedHashMap();//怎么把刚在获取的编号 和 商品对应呢//遍历 hashSet 没有索引 我们用List集合

HashSet hashSet =getRandomStrings();

ArrayList arrayList = new ArrayList<>();

arrayList.addAll(hashSet);//遍历添加

for (int i = 0; i < str.length; i++) {

map.put(arrayList.get(i), str[i]);

}//遍历Map集合

for(String string : map.keySet()) {

System.out.println(string+" : "+map.get(string));

}

}

今天就到这里了.....写的不好,请大家给我点建议

java基础习题集_java基础集合经典训练题相关推荐

  1. java基础试题_java基础测试题_含答案.doc

    java基础测试题_含答案 Java基础试题 姓名 一.选择题(每题2分,共30分) 请写出标识符的命名规则描述正确的是[多选]( ABCD ) A.由英文字母.数字._和$组成,长度不限. B.标识 ...

  2. 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

    黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...

  3. java list 差集_Java基础之集合框架

    Java 集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器 ...

  4. java super用法_Java基础面试题汇总

    blog.csdn.net/ThinkWon/article/details/104390612 Java概述 何为编程 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结 ...

  5. java 方法泛型_Java基础学习,什么是泛型概念,使用泛型有哪些好处?

    一般的类和方法,只能使用具体的类型,要么是基础数据类型,要么是自定义类. 如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会很大. 泛型的字面概念: 适合用于许多类型. 在面向对象中, ...

  6. java基础学不会_java基础

    Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...

  7. java 抽象类语法_JAVA基础语法8--多态/抽象类/抽象方法

    多态 继承.封装.多态.抽象是面向对象编程的四大基本特征.封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提条件下,改变类的内部结构,同时保护了数据.继承是为了重用父类代码,同时为多态做准备.那 ...

  8. java 反射泛型方法_java基础之反射和泛型以及注解

    java基础之反射和泛型以及注解 泛型擦除 泛型擦除: 泛型只在编译时期有效,编译后的字节码文件中不存在泛型信息. 声明泛型集合,集合两端类型必须一致.类型也可以用包装类型,泛型的类型必须是引用类型, ...

  9. java基础大概_Java基础知识(一)

    一.面向对象和面向过程的区别 面向过程 :面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机.嵌入式开发.Linux/Unix ...

最新文章

  1. CF 287(div 2) B Amr and Pins
  2. 设置更改root密码 ,连接mysql,mysql常用命令
  3. mysql end log pos_MySql binlog日志详解
  4. Struts2的文件目录
  5. java 代码通用结构_java spring代码通用结构-java
  6. ios 一直是正在等待审核_iOS开发者账号被调查了,相关问题整理
  7. 景观连接度指数怎么算都是0的解决方案
  8. 企业要做好安全遵从的五个实用技巧
  9. javascript onbeforeunload与onunload事件
  10. 石头剪刀布程序流程图_民间传统体育游戏 | 石头剪刀布
  11. 工资计算小程序,不通用
  12. 破解tumblr背景音乐
  13. SolidWorks学习笔记5创建基准面,基准线,基准点
  14. 5G向5.5G演进,变化是什么?
  15. C/C++项目开发:《火柴人游戏》,500行源代码开发
  16. 一个棋牌游戏的服务端开发1
  17. 在线免费网盘空间统计
  18. 百度飞桨图像分类------第三天(实现蝴蝶图像分类)
  19. 通过python插入数据到mysql数据库以及mysql查询方法
  20. linux如何查看wifi信号强弱

热门文章

  1. jtabel 遍历_单击按钮更新JTable
  2. linux服务器崩,Linux系统崩溃最快速的解决方法
  3. php new redis错误,解决PHP Redis扩展无法加载的问题(zend_new_interned_string in Unknown on line 0)...
  4. 小姐姐在硅谷生活了三年,实现了理想的生活模式
  5. Firefox 突然拉黑中国用户
  6. 开源中国 Chrome 插件,你的好帮手~
  7. 皮一皮:现在上门流行这样了?
  8. 盘点2020中国IT上市企业100强,贵司上榜了吗?
  9. ​每日一皮:​你的Frozen Throne...
  10. GitHub官方开源新命令行工具