题目1:创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。
代码:
one类——一个主方法,四个对象
/** * 创建了三个ArrayList对象——al:表示一号线性表;bl:表示二号线性表;cl:表示两个线性表的并集 * 创建了一个HashSet对象——dl:表示两个线性表的交集; * 依次判断al和bl之间的元素是否一致,是,将元素放入cl;否,将元素放入dl */ package cn.deu.ccut.ThirteenWeek; import java.util.*; public class one { public static void main(String[] args) { ArrayList al=new ArrayList(); ArrayList bl=new ArrayList(); ArrayList cl=new ArrayList();//两个线性表的交集对象 HashSet dl=new HashSet();//两个线性表的并集对象 al.add("chen"); al.add("wang"); al.add("liu"); al.add("zhang"); bl.add("chen"); bl.add("hu"); bl.add("zhang"); System.out.println("一号线性表的内容为"+al); System.out.println("二号线性表的内容为"+bl); int a=al.size()<=bl.size()?bl.size():al.size(); int b=al.size()<=bl.size()?al.size():bl.size(); for(int i=0;i<a;i++) { for(int p=0;p<b;p++) { if(al.get(i)==bl.get(p)) { cl.add(al.get(i)); }else { dl.add(al.get(i)); dl.add(bl.get(p)); } } } System.out.println("两个线性表的交集为"+cl); System.out.println("两个线性表的并集为"+dl); } }
运行截图:
题目2:编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。
代码:
Two类:一个对象,一个主方法
/** * 一个对象:TwoHashMap的对象th * 利用th调用TwoHashMap类的无参构造方法 */ package cn.deu.ccut.ThirteenWeek; import java.util.*; public class Two { public static void main(String[] args) { Scanner der=new Scanner(System.in); System.out.println("输入字符串"); String st=der.nextLine();//键入字符串 TwoHashMap th=new TwoHashMap();//创建TwoHashMap的对象th th.TwoHashMap(st);//调用TwoHashMap的无返回值构造方法,并传参数值 System.out.println("数字——共"+th.num.size()+"个,分别为:"+th.num); System.out.println("小写字母——共"+th.al.size()+"个,分别为:"+th.al); System.out.println("大写字母——共"+th.Al.size()+"个,分别为:"+th.Al); } }
TwoHashMap类:四个对象;一个无返回值构造方法
/** * 一个HashMap类的对象——hm:存放字符串 * 三个ArrayList类的对象——num:存放数字; * Al:存放大写字母; * al:存放小写字母 * */ package cn.deu.ccut.ThirteenWeek; import java.util.*; public class TwoHashMap { HashMap hm=new HashMap();//存放字符串的对象hm ArrayList num=new ArrayList();//存放数字的对象num ArrayList Al=new ArrayList();//存放大写字母的对象Al ArrayList al=new ArrayList();//存放小写字母的对象al public void TwoHashMap(String st) { int i1=st.length();//将字符串st的元素数,赋给i1 for(int i=0;i<i1;i++) { hm.put(i,st.charAt(i));//利用fou循环将字符串内的元素放入hm对象 } Set set=hm.entrySet();//调用entrySet()方法返回hm的集合 Iterator i=set.iterator(); while(i.hasNext()) { //hasNext()判断集合i中有没有未遍历的元素 Map.Entry me=(Map.Entry)i.next();//(Map.Entry)i.next(),将i集合中未遍历的下一项元素转化为Map.Entry,赋给 Map.Entry me Object a=me.getValue(); //将me集合中选定的映射,其值赋给Object a; if((char)a>='0'&&(char)a<='9') { num.add(a); //放入num对象中 }else { if((char)a>='a'&&(char)a<='z') { al.add(a); }else { Al.add(a); } } } } }
运行截图: