题目1:创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。
package ccut.ch.thirteen.j;
import java.util.*;
public class Test1 {
public static void main(String[] args) {
ArrayList<String> a1= new ArrayList<String>();
a1.add("chen");
a1.add("wang");
a1.add("liu");
a1.add("zhang"); //向线性表a1中增加字符串
ArrayList<String> a2= new ArrayList<String>();
a2.add("chen");
a2.add("hu");
a2.add("zhang"); //向线性表a2中增加字符串
ArrayList<String> b= new ArrayList<String>();
ArrayList<String> j= new ArrayList<String>();
b.addAll(a1); //将a1中的所有元素加入到b中
for(int i=0;i<3;i++)
{
if(b.contains(a2.get(i))) //判断b中是否包含a2的元素
j.add(a2.get(i)); //将相同的元素放到j中
}
System.out.println("交集:"+j);
for(int i=0;i<3;i++)
{
if(b.contains(a2.get(i))) //判断b中是否包含a2的元素
continue; //包含就进行下一次循环
else
b.add(a2.get(i)); //不包含将元素加入到b中
}
System.out.println("并集:"+b);
}
}
运行结果
题目2:编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。
package ccut.ch.thirteen.j;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Test2 {
public static void main(String[] args) {
System.out.println("输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成:");
Scanner r = new Scanner(System.in);
String s = r.nextLine(); //将用户输入的内容赋给字符串s
char[] ch = s.toCharArray(); //定义一个字符数组存入数据
int temp1 = 0, temp2 = 0, temp3 = 0; //定义计数器
HashMap<Integer, Character> hm1 = new HashMap<Integer, Character>(); //创建HashMap类对象hm1
for (int i = 0; i < ch.length; i++)
if (ch[i] >= 'A' && ch[i] <= 'Z') {
temp1++;
hm1.put(temp1, ch[i]);
} //遍历字符数组,找数组中的数字,计数并往hm1里存数字
System.out.print("大写字母----共" + temp1 + "个," + "分别为" + " ");
Set set1 = hm1.entrySet(); //返回包含映射中项的集合
Iterator b2 = set1.iterator(); //迭代器遍历
while (b2.hasNext()) { //显示元素
Map.Entry me1 = (Map.Entry) b2.next(); //Map.Entry可以操作映射的输入
System.out.print(me1.getValue());
}
System.out.println();
HashMap<Integer, Character> hm2 = new HashMap<Integer, Character>();//创建HashMap类对象hm2
for (int i = 0; i < ch.length; i++)
if (ch[i] >= 'a' && ch[i] <= 'z') {
temp2++;
hm2.put(temp2, ch[i]);
} //遍历字符数组,找数组中的小写字母,计数并往hm2里存小写字母
System.out.print("小写字母----共" + temp2 + "个," + "分别为" + " ");
Set set2 = hm2.entrySet(); //返回包含映射中项的集合
Iterator b3 = set2.iterator(); //迭代器遍历
while (b3.hasNext()) { //显示元素
Map.Entry me2 = (Map.Entry) b3.next();//Map.Entry可以操作映射的输入
System.out.print(me2.getValue());
}
System.out.println();
HashMap<Integer, Character> hm3 = new HashMap<Integer, Character>();//创建HashMap类对象hm3
for (int i = 0; i < ch.length; i++)
if (ch[i] >= '0' && ch[i] <= '9') {
temp3++;
hm3.put(temp3, ch[i]);
} //遍历字符数组,找数组中的大写字母,计数并往hm3里存大写字母
System.out.print("数字----共" + temp3 + "个," + "分别为" + " ");
Set set = hm3.entrySet(); //返回包含映射中项的集合
Iterator b1 = set.iterator(); //迭代器遍历
while (b1.hasNext()) { //显示元素
Map.Entry me = (Map.Entry) b1.next();//Map.Entry可以操作映射的输入
System.out.print(me.getValue());
}
}
}
运行结果