java求交集和并集
用一个集合类求集合a和b的交集与并集。大体框架如下:publicclassGroup{inta[]=newint[20];intb[]=newint[20];……publ...
用一个集合类求集合a和b的交集与并集。大体框架如下:
public class Group{
int a[]=new int[20];
int b[]=new int[20];
……
public void jiaoji(...){
for(i=0;i<a.length;i++)
for(j=0;j<b.length;j++)
if(a[i]==b[j]) System.out.print(a[i]+",");
}
public void bingji(){……}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
System.out.print("交集为");
……
System.out.print("并集为");
……
}
}
因为刚学java几个月,只会最简单的,不要在前面加import或package语句,也不要用set语句,只用简单的for循环(例如jiaoji里的程序)。请帮我补充完整个程序,并纠正我的错误。谢谢,奖励50~100分哦
我说的集合类,是指编写一个处理集合交并集运算的类,不是指java专门的集合类 展开
public class Group{
int a[]=new int[20];
int b[]=new int[20];
……
public void jiaoji(...){
for(i=0;i<a.length;i++)
for(j=0;j<b.length;j++)
if(a[i]==b[j]) System.out.print(a[i]+",");
}
public void bingji(){……}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
System.out.print("交集为");
……
System.out.print("并集为");
……
}
}
因为刚学java几个月,只会最简单的,不要在前面加import或package语句,也不要用set语句,只用简单的for循环(例如jiaoji里的程序)。请帮我补充完整个程序,并纠正我的错误。谢谢,奖励50~100分哦
我说的集合类,是指编写一个处理集合交并集运算的类,不是指java专门的集合类 展开
展开全部
虽然想尽量维持你程序的原型,但是还是改的差不多了。学java注重的是面向对象的思想,建议你不要把太多精力放在这些算法上面,不能再像学习C语言那样学习java。
public class Group{
public void jiaoji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
System.out.print(a[i]+",");
}
}
}
}
public void bingji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
for(int i=0;i<b.length;i++){
boolean flag=true;
for(int j=0;j<a.length;j++){
if(b[i]==a[j]){
flag=false;
}
}
if(flag){
System.out.print(b[i]+",");
}
}
}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
Group group=new Group();
System.out.print("交集为:");
group.jiaoji(a,b);
System.out.print("\n并集为:");
group.bingji(a,b);
}
}
public class Group{
public void jiaoji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
System.out.print(a[i]+",");
}
}
}
}
public void bingji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
for(int i=0;i<b.length;i++){
boolean flag=true;
for(int j=0;j<a.length;j++){
if(b[i]==a[j]){
flag=false;
}
}
if(flag){
System.out.print(b[i]+",");
}
}
}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
Group group=new Group();
System.out.print("交集为:");
group.jiaoji(a,b);
System.out.print("\n并集为:");
group.bingji(a,b);
}
}
更多追问追答
追问
谢谢你的解答,我有几个疑问:
bingji里有个if(flag),C语言可以这么写,但是java允许这么写吗?
还有main里的Group group=new Group(),前面没有这个名为Group的构造方法呀,能用么?
在写int a[]={......}之前,不需要int a[]=new int[20]这句话吗?
追答
flag只是定的一个boolean类型的变量当做标记而已,你可以把flag改成任意一个合法的变量名。
因为构造方法是每个类必须有的,所以即使你不写,编译器也会给该类默认一个无参构造方法。
int a[]={........},是一种初始化方式,编译器会自动为数组分配一定的空间,所以不能在前面在写
int a[]=new int[20]。
int a[]=new int[20]是声明数组的同时指定数组的长度为20。这时你只能如下赋值:
a[0]=**;
a[1]=**;
.
.
.a[19]=**;
或者通过一个for循环完成赋值。
你知道下面三楼回复的mark~`是什么意思吗??
展开全部
首先,集合类就要import语句,当然,不用import也行;
只要肯动脑,这一点也不难,以后不要偷懒了啊;
public class JiaoBinTest {
public static void main(String[] args) {
int[]a = {32,45,65,34,213};
int[]b = {32,45,65,23,335};
int[]bin = bin(a,b);
int[]jiao = jiao(a,b);
for(int i=0;i<jiao.length;i++){
System.out.println(jiao[i]);
}
for(int i=0;i<bin.length;i++){
System.out.println(bin[i]);
}
}
public static int[] bin(int[]a,int[]b){
int count = a.length + b.length;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
count --;
}
}
}
int[]bin = new int[count];
count = 0;
for(int i=0;i<a.length;i++){
bin[count ++] = a[i];
}
boolean same = false;
for(int i=0;i<b.length;i++){
for(int j=0;j<a.length;j++){
if(b[i] == a[j]){
same = true;
}
}
if(!same){
bin[count++] = b[i];
}
same = false;
}
return bin;
}
public static int[] jiao(int[]a,int[]b){
int count = 0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
count ++;
}
}
}
int[]jiao = new int[count];
count = 0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
jiao[count] = a[i];
count ++;
}
}
}
return jiao;
}
}
只要肯动脑,这一点也不难,以后不要偷懒了啊;
public class JiaoBinTest {
public static void main(String[] args) {
int[]a = {32,45,65,34,213};
int[]b = {32,45,65,23,335};
int[]bin = bin(a,b);
int[]jiao = jiao(a,b);
for(int i=0;i<jiao.length;i++){
System.out.println(jiao[i]);
}
for(int i=0;i<bin.length;i++){
System.out.println(bin[i]);
}
}
public static int[] bin(int[]a,int[]b){
int count = a.length + b.length;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
count --;
}
}
}
int[]bin = new int[count];
count = 0;
for(int i=0;i<a.length;i++){
bin[count ++] = a[i];
}
boolean same = false;
for(int i=0;i<b.length;i++){
for(int j=0;j<a.length;j++){
if(b[i] == a[j]){
same = true;
}
}
if(!same){
bin[count++] = b[i];
}
same = false;
}
return bin;
}
public static int[] jiao(int[]a,int[]b){
int count = 0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
count ++;
}
}
}
int[]jiao = new int[count];
count = 0;
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i] == b[j]){
jiao[count] = a[i];
count ++;
}
}
}
return jiao;
}
}
更多追问追答
追问
感谢您的解答。只是程序有点繁琐,count是不是稍嫌多余?
追答
没有count怎么知道数组定义多大啊,但你也可以
1:使用arraylist计算,add添加,toarray方法得到对应的数组; 使用hasset计算并集,这样相同的自动会舍弃;
2:使用足够大的数组,使用arraycopy copy到一个较小的数组中去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
虽然想尽量维持你程序的原型,但是还是改的差不多了。学java注重的是面向对象的思想,建议你不要把太多精力放在这些算法上面,不能再像学习C语言那样学习java。
public class Group{
public void jiaoji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
System.out.print(a[i]+",");
}
}
}
}
public void bingji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
for(int i=0;i<b.length;i++){
boolean flag=true;
for(int j=0;j<a.length;j++){
if(b[i]==a[j]){
flag=false;
}
}
if(flag){
System.out.print(b[i]+",");
}
}
}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
Group group=new Group();
System.out.print("交集为:");
group.jiaoji(a,b);
System.out.print("\n并集为:");
group.bingji(a,b);
}
}
public class Group{
public void jiaoji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
System.out.print(a[i]+",");
}
}
}
}
public void bingji(int[] a,int[] b){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+",");
}
for(int i=0;i<b.length;i++){
boolean flag=true;
for(int j=0;j<a.length;j++){
if(b[i]==a[j]){
flag=false;
}
}
if(flag){
System.out.print(b[i]+",");
}
}
}
public static void main(String[] args){
int a[]={1,2,3,4,5};
int b[]={4,5,6,7,8};
Group group=new Group();
System.out.print("交集为:");
group.jiaoji(a,b);
System.out.print("\n并集为:");
group.bingji(a,b);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.ArrayList;
public class Group {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Group g=new Group();
String[] a = {"a","b","c","d",};
String[] b = {"c","d","e","f","g",};
System.out.println("交集是:");
g.doJiaoJi(a, b);
System.out.println("\n并集是:");
g.doBingJi(a, b);
}
public void doBingJi( String[] a, String[] b){
ArrayList<String> tmp = new ArrayList<String>();
for(String s:b){
tmp.add(s);
}
for(String s:a){
if(!tmp.contains(s)){
tmp.add(s);
}
}
String[] c = tmp.toArray(new String[tmp.size()]);
for (String s:c){
System.out.print(s+" ");
}
}
public void doJiaoJi( String[] a, String[] b){
ArrayList<String> tmp = new ArrayList<String>();
for(String s:b){
for(String s2:a){
if(s.equals(s2)){
tmp.add(s);
}
}
}
String[] c = tmp.toArray(new String[tmp.size()]);
for (String s:c){
System.out.print(s+" ");
}
}
}
public class Group {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Group g=new Group();
String[] a = {"a","b","c","d",};
String[] b = {"c","d","e","f","g",};
System.out.println("交集是:");
g.doJiaoJi(a, b);
System.out.println("\n并集是:");
g.doBingJi(a, b);
}
public void doBingJi( String[] a, String[] b){
ArrayList<String> tmp = new ArrayList<String>();
for(String s:b){
tmp.add(s);
}
for(String s:a){
if(!tmp.contains(s)){
tmp.add(s);
}
}
String[] c = tmp.toArray(new String[tmp.size()]);
for (String s:c){
System.out.print(s+" ");
}
}
public void doJiaoJi( String[] a, String[] b){
ArrayList<String> tmp = new ArrayList<String>();
for(String s:b){
for(String s2:a){
if(s.equals(s2)){
tmp.add(s);
}
}
}
String[] c = tmp.toArray(new String[tmp.size()]);
for (String s:c){
System.out.print(s+" ");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-11-14 · 知道合伙人互联网行家
关注
展开全部
处理集合交并集运算的类,实现java专门的集合类
简单实现代码如下:
package test;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<Integer> result = new HashSet<Integer>();
Set<Integer> set1 = new HashSet<Integer>(){{
add(1);
add(3);
add(5);
}};
Set<Integer> set2 = new HashSet<Integer>(){{
add(1);
add(2);
add(3);
}};
result.clear();
result.addAll(set1);
result.retainAll(set2);
System.out.println("交集:"+result);
result.clear();
result.addAll(set1);
result.addAll(set2);
System.out.println("并集:"+result);
}
}
简单实现代码如下:
package test;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set<Integer> result = new HashSet<Integer>();
Set<Integer> set1 = new HashSet<Integer>(){{
add(1);
add(3);
add(5);
}};
Set<Integer> set2 = new HashSet<Integer>(){{
add(1);
add(2);
add(3);
}};
result.clear();
result.addAll(set1);
result.retainAll(set2);
System.out.println("交集:"+result);
result.clear();
result.addAll(set1);
result.addAll(set2);
System.out.println("并集:"+result);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询