题目1:创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。
(1)
1 package com;
2
3 import java.util.ArrayList;
4
5 public class 交集和并集 {
6
7 public static void main(String[] args) {
8 ArrayList<String> a1 = new ArrayList<String>(); //ArrayList对象 a1存储第一组字符串
9 a1.add("chen");
10 a1.add("wang");
11 a1.add("liu");
12 a1.add("zhang");
13 ArrayList<String> a2 = new ArrayList<String>(); //ArrayList对象a2存储第二组字符串
14 a2.add("chen");
15 a2.add("hu");
16 a2.add("zhang");
17
18 ArrayList <String>a3 = new ArrayList<String>(); //ArrayList对象a3用来对两组字符串进行比较以及存储交集和并集
19 a3.addAll(a1); //a1全部存到a3里
20 for (int i = 0; i < a2.size(); i++) { //求并集:依次遍历a2中的元素判断
21 if (a3.contains(a2.get(i))) { //如果a2中的这个元素a3里也有,那么就进行下次循环。
22 continue; //如果a2中的这个元素a3里没有,那么就将这个元素存到a3里,最后得到的a3即为并集
23 } else {
24 a3.add(a2.get(i));
25 }
26 }
27 System.out.println("两个字符串的并集是"+a3);
28 a3.removeAll(a3); //将a3中的元素都移除
29
30 for(int i=0;i<a2.size();i++){ //求交集:依次遍历a2中的元素
31 if(a1.contains(a2.get(i))){ //如果a2中的 这个元素a1里也有,就将这个元素存到a3里
32 a3.add(a2.get(i)); //如果a2中的这个元素a1里没有,就进行下次循环,最后得到的a3即为交集
33 }
34 }
35 System.out.println("两个字符串的交集是 :"+a3);
36
37 }
38
39 }
(2)运行结果:

题目2:编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。
(1)
1 package com;
2
3 import java.util.HashMap;
4 import java.util.Iterator;
5 import java.util.Map;
6 import java.util.Scanner;
7 import java.util.Set;
8
9 public class zifu {
10
11 public static void main(String[] args) {
12 String regex="\\w{0,}"; //正则表达式判断输入是否符合要求
13 System.out.println("请输入一个字符串”:");
14 Scanner reader=new Scanner(System.in);
15 String str=reader.nextLine(); //str接受输入的字符串
16
17 if(str.matches(regex)){ //如果str满足正则表达式的要求
18 int numbercount=0; //定义数字计数器,大写字母计数器,小写字母计数器
19 int captialcount=0;
20 int lowercasecount=0;
21 StringBuffer str1=new StringBuffer(); //三个StringBuffer类对象来分别存储数字,大写字母和小写字母
22 StringBuffer str2=new StringBuffer(); //因为要遍历到一个,就随时加到相应的字符串中,所以要用StringBuffer类来创建
23 StringBuffer str3=new StringBuffer();
24 HashMap hm=new HashMap(); //创建HashMap对象
25 for(int i=0;i<str.length();i++){ //for循环遍历输入的字符串,并将其分类,将字符串拆成字符
26 char c=str.charAt(i); //将不同的字符存在不同的键值下,
27 if(c>='0'&&c<='9'){ //数字字符存在str1里,用键值“数字”标记,数字计数器+1
28 str1.append(c+"");
29 hm.put("数字", str1);
30 numbercount++;
31 }else if(c>='A'&&c<='Z'){ //大写字母存在str2里,用键值“大写字母”标记,大写字母计数器+1
32 str2.append(c+"");
33 hm.put("大写字母", str2);
34 captialcount++;
35 }else if(c>='a'&&c<='z'){ //小写字母存在str3里,用键值“小写字母标记”,小写字母计数器+1
36 str3.append(c+"");
37 hm.put("小写字母", str3);
38 lowercasecount++;
39 }
40 }
41
42
43 Set set=hm.entrySet(); //用set来存储所有HashMap中的项
44 Iterator i=set.iterator(); //遍历set中的元素即遍历HashMap中的所有元素
45 while(i.hasNext()){
46 Map.Entry me=(Map.Entry)i.next(); //Map.Entry对象存放key和value
47
48 if(me.getKey().equals("数字")){ //如果me的键值与“数字”匹配,那么输出数字计数器的值和me的value值
49 System.out.print("数字共有"+numbercount+"个,");
50 }else if(me.getKey().equals("大写字母")){ //如果me的键值与“大写字母”匹配,那么输出大写字母计数器的值和me的value值
51 System.out.print("大写字母共有"+captialcount+"个,");
52 }else if(me.getKey().equals("小写字母")){ //如果me的键值与“小写字母”匹配,那么输出小写字母计数器的值和me的value值
53 System.out.print("小写字母共有"+lowercasecount+"个,");
54 }
55 System.out.println("有:"+me.getValue());
56 }
57 }else{
58 System.out.println("输入错误"); //如果输入的字符串与正则表达式格式不符,则输入错误。
59 }
60
61 }
62
63 }
(2)运行结果:
输入合法:

输入不合法:
