100以内长度为20的数组Java_Java基础题设计Set类应包含一个长度为20的int类型的数组作为成员变量...

匿名用户

1级

2018-04-27 回答

输入内容没做去重,需要可以追问。

import java.util.Arrays;

public class Set {

//数组

private int[] list;

//数组使用长度

private int length;

//扩容方法

private void expand(){

int[] l = new int[2*list.length];

for(int i=0;i

l[i] = list[i];

}

list = l;

}

//无参构造

Set(){

list = new int[20];

length = 0;

}

//有参构造

Set(int[] l){

set(l);

}

//设置数组方法

public void set(int[] l){

list = new int[20];

length = l.length;

if(length>list.length){

expand();

}

for(int i=0;i

list[i] = l[i];

}

}

//获取数组方法

public int[] get(){

int[] r = new int[length];

for(int i=0;i

r[i]=list[i];

}

return r;

}

//并方法

public Set merge(Set o){

int[] ol = o.get();

int[] r = new int[length+ol.length];

for(int i=0;i

r[i] = list[i];

}

int rlength = length;

for(int i=0;i

boolean flag = true;

for(int j=0;j

if(ol[i]==list[j]){

flag = false;

break;

}

}

if(flag){

r[rlength++] = ol[i];

}

}

r = Arrays.copyOfRange(r, 0, rlength);

return new Set(r);

}

//交方法

public Set intersect(Set o){

int[] r = new int[length];

int rlength = 0;

int[] ol = o.get();

for(int i=0;i

for(int j=0;j

if(list[i]==ol[j]){

r[rlength++] = list[i];

}

}

}

r = Arrays.copyOfRange(r, 0, rlength);

return new Set(r);

}

//输出结果,正常为toSring,如果要按题用soString,自己改

public String toString(){

return Arrays.toString(Arrays.copyOfRange(list, 0, length));

}

}

public class SetTest {

public static void main(String[] args) {

int[] a = new int[]{1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,21,23,25,27,29};

int[] b = new int[]{2,4,6,8,10,12,14,16,18,20,21,23,25,27,29,32,34,36,38,40};

Set s1 = new Set(a);

Set s2 = new Set(b);

System.out.println("集合一:"+s1.toString());

System.out.println("集合二:"+s2.toString());

System.out.println("集合并:"+s1.merge(s2).toString());

System.out.println("集合交:"+s1.intersect(s2).toString());

}

}

追问:

我其实卡在数组那里,这种方法扩容,没看懂。什么意思。 list.length也不知道是多少?从后面推过来的吗?刚从上学期学了C语言,这学期刚学JAVA。。。

//扩容方法

private void expand(){

int[] l = new int[2*list.length];

for(int i=0;i

l[i] = list[i];

}

list = l;

}

追答:

list.length是当前长度。调用此方法,说明长度不足,于是将长度翻倍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值