java 实现集合的并,交,差

 集合的并、交和差运算

问题描述】

编制一个能演示执行集合的并、交和差运算的程序。

基本要求】

(1) 集合的元素限定为小写字母字符 [‘a’..’z’] 。

(2) 演示程序以用户和计算机的对话方式执行。

【测试数据】

(1)Set1="magazine",Set2="paper",

Set1∪Set2="aegimnprz",Setl ∩Set2="ae",Set1-Set2="gimnz"。

(2)Set1= " 012oper4a6tion89",Set2="error data",

Set1∪Set2="adeinoprt",Setl ∩Set2="aeort",Set1-Set2="inp"。

package jihe;
import java.util.*;

 
 
 
 
public class Muster {
// 定义并集存储对象
private Set<Character> unite = new LinkedHashSet<Character>();
// 定义交集存储对象
private Set<Character> intersection = new LinkedHashSet<Character>();
// 定义a-b差集存储对象
private Set<Character> differenceA2B = new LinkedHashSet<Character>();
// 定义b-a差集存储对象
private Set<Character> differenceB2A = new LinkedHashSet<Character>();
/**
* 计算每个集合
* @param a
* @param b
*/
public Muster(String muster1, String muster2) {
//把非26个英文字母全替换成空串
	muster1 = muster1.replaceAll("[^a-z]", "");
	muster2 = muster2.replaceAll("[^a-z]", "");
	//循环第一个集合
	for(Character temp : muster1.toCharArray()) {
	//添加并集
	unite.add(temp);
	if(muster2.indexOf(temp) >= 0) {
	//如果集合2中存在当前元素,在交集中追加记录
	intersection.add(temp);
	} else {
		//如果集合2中不存在当前元素,在第一个集合与第二个集合的差集添加记录
		differenceA2B.add(temp);
		}
		}
		//循环第二个集合
		for(Character temp : muster2.toCharArray()) {
		//添加并集
		unite.add(temp);
		if(muster1.indexOf(temp) >= 0) {
		//如果集合1中存在当前元素,在交集中追加记录
		intersection.add(temp);
		} else {
		//如果集合1中不存在当前元素,在第二个集合与第一个集合的差集添加记录
		differenceB2A.add(temp);
		}
		}
		}
 
public static void main(String[] args) {
	        char[] str1=new char[100];
	        char[] str2=new char[100];
	        char[] str3=new char[100];
	         char temp;
	         String string1,string2,replace = null;     
	    	Scanner scan = new Scanner(System.in);
	    	 
	        System.out.println("请输入第一串字符");
	        string1=scan.nextLine(); 
	        str1=string1.toCharArray();
	         replace=string1;
	         
	             for(int i=0;i<string1.length();i++) {
	             for(int j=string1.length()-1;j>i;j--)
	             {
	                 if(str1[j]<=str1[j-1])
	                 {
	                     temp=str1[j];
	                     str1[j]=str1[j-1];
	                     str1[j-1]=temp;
	                 }
	             }
	             }
	         String i = String.valueOf(str1);
	         
	        System.out.println("请输入第二串字符");
	        string2=scan.nextLine();
	        str2=string2.toCharArray();
	         replace=string2;
	        
	             for(int a=0;a<string2.length();a++) {
	             for(int j=string2.length()-1;j>a;j--)
	             {
	                 if(str2[j]<=str2[j-1])
	                 {
	                     temp=str2[j];
	                     str2[j]=str2[j-1];
	                     str2[j-1]=temp;
	                 }
	             }
	             }
	         String j = String.valueOf(str2);//将 char 变量 c 转换成字符串 
	        

	            
	        
	        Muster muster = new Muster(i,j);
	        str3=muster.getUnite().toCharArray();
	         replace=muster.getUnite();
	        
	             for(int a=0;a<muster.getUnite().length();a++) {
	             for(int k=muster.getUnite().length()-1;k>a;k--)
	             {
	                 if(str3[k]<=str3[k-1])
	                 {
	                     temp=str3[k];
	                     str3[k]=str3[k-1];
	                     str3[k-1]=temp;
	                 }
	             }
	             }
	         String k = String.valueOf(str3);
	        
	        
	  
	        
	        System.out.println("Set1∪Set2=" + k);
	      //输出交集
	      System.out.println("Setl∩Set2=" + muster.getIntersection());
	      //第一个集合与第二个集合的差集
	      System.out.println("Set1-Set2=" + muster.getDifferenceA2B());
	      //输出第二个集合与第一个集合的差集
	      System.out.println("Set2-Set1=" + muster.getDifferenceB2A());	        
	        
	            
}
	    
public String getUnite() {
return getStringBySet(unite);
}
public String getIntersection() {
return getStringBySet(intersection);
}
public String getDifferenceA2B() {
return getStringBySet(differenceA2B);
}
public String getDifferenceB2A() {
return getStringBySet(differenceB2A);
}
private String getStringBySet(Set<Character> set) {
StringBuffer result = new StringBuffer();
for(Character c : set) {
result.append(c);
}
return result.toString();
}
}

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值