P235 实战练习(集合类2)、摇奖程序和验证码(修改版)

时间:2023-03-09 16:50:56
P235  实战练习(集合类2)、摇奖程序和验证码(修改版)

1、分别向Set集合以及List集合中添加“A”、“a”、“c”、“C”、“a”5个元素,观察重复值“a”能否在List集合以及Set集合中成功添加。

 package org.hanqi.practise;
import java.util.*;
public class Test2 { public static void main(String[] args) { Set<String> s = new HashSet<String>();
s.add("A");
s.add("a");
s.add("c");
s.add("C");
s.add("a");
if(s.add("a"))
{
System.out.println("成功添加a");
}
else
{
System.out.println("添加a失败");
}
for(String t:s)
{
System.out.print(" "+t);
}
System.out.println();
System.out.println("s的长度="+s.size()); List<String> l = new ArrayList<String>();
l.add("A");
l.add("a");
l.add("c");
l.add("C");
l.add("a");
for(String t:l)
{
System.out.print(" "+t);
}
System.out.println();
System.out.println("s的长度="+l.size());
}
}

运行结果为:

P235  实战练习(集合类2)、摇奖程序和验证码(修改版)

结论:重复值“a”能在List集合中成功添加,而不能在Set集合中成功添加。

2、创建Map集合,创建Emp对象,并将创建的Emp对象添加到集合中(Emp对象的id作为Map集合的键),并将id为005的对象从集合中移除。

创建Emp类:

 package org.hanqi.practise;

 public class Emp {

     private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Emp(String id, String name) {
super();
this.id = id;
this.name = name;
}
}

创建MapTest类:

 package org.hanqi.practise;

 import java.util.*;

 public class MapTest {

     public static void main(String[] args) {

         Map<String,String>m = new HashMap<String,String>();
Emp e = new Emp("005","张三");
Emp e1 = new Emp("9527","华安");
Emp e2 = new Emp("4927","刘建明");
Emp e3 = new Emp("27149","陈永仁");
m.put(e.getId(), e.getName());
m.put(e1.getId(), e1.getName());
m.put(e2.getId(), e2.getName());
m.put(e3.getId(), e3.getName());
for(String t:m.keySet())
{
System.out.println(t+" "+m.get(t));
} System.out.println("移除编号005对象后的集合为:");
m.remove("005");
Set s = m.keySet();
Iterator<String>it = s.iterator();
while(it.hasNext())
{
String str = it.next();
String name = m.get(str);
System.out.println(str+" "+name);
}
}
}

运行结果为:

P235  实战练习(集合类2)、摇奖程序和验证码(修改版)

3、摇奖程序

 package org.hanqi.practise;

 import java.util.*;

 public class Test3 {

     public static void main(String[] args) {

         Random  r = new Random();
Set<Integer> s = new HashSet<Integer>(); //若用Set集合可不必进行下面if的判断,因为Set集合本身就不允许有重复值
while(s.size() < 10)
{
int i = r.nextInt(20);
if(!s.contains(i))
{
s.add(i);
}
}
System.out.println("从20里面随机抽取10个数:");
for(Integer t:s)
{
System.out.print(" "+t);
}
}
}

运行结果为:

P235  实战练习(集合类2)、摇奖程序和验证码(修改版)

方法二:

  List<Object>  list= new ArrayList<Object>();     //从1-28之间随机抽取9个不重复的数字

         for(int i=1;i<=28;i++)
{
list.add(i);
} Random r=new Random(); for(int i=0;i<9;i++)
{
int t=r.nextInt(list.size()); System.out.print(" " +list.get(t)); list.remove((list.get(t))); //这一步相当于得到一个数就移除list集合,这样就保证不会有重复的数值
}

4、随机产生四位验证码    0--9,a--z,A--Z随机取四个数作为验证码

  //产生验证码    0--9,a--z,A--Z随机取四个数作为索引值产生验证码

         List<Object>  list= new ArrayList<Object>();

         for(int i=0;i<10;i++)
{
list.add(i);
}
for(int i=65;i<=90;i++)
{
list.add((char)i);
}
for(int i=97;i<=122;i++)
{
list.add((char)i);
} for(Object t:list)
{
System.out.print(t);
} System.out.println(); Random r=new Random(); //产生四位数的验证码 System.out.print("四位数验证码:"); for(int i=1;i<=4;i++)
{
System.out.print(list.get(r.nextInt(list.size())));
}

运行结果为:

P235  实战练习(集合类2)、摇奖程序和验证码(修改版)

方法二:

 public class Choujiang {             //此为最普通的截取方法

     public static void main(String[]args)
{ String str = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
Random yan=new Random();
for(int i=0; i<4; i++)
{
int j = yan.nextInt(str.length()-1); String s = (str.substring(j, j+1)); System.out.print(s);
}
}
}