集合例题---

题目:
已知有十六支男子足球队参加2008 北京奥运会。

写一个程序,把这16支球队随机分为4个组。采用List集合和随机数

2008 北京奥运会男足参赛国家:

科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利

本人做题思想如下:
1.首先创建4个数组或者集合分别来进行存储四组,但是到后来发现这样是可以完成,但是代码非常多。
大体思路:创建四个数组,利用for循环来给他赋值,每次赋值后,将这个索引删除,但是工程量巨大,所以放弃。
2.后来我想能不能只用定义一个数组或者集合来接受,利用循环,使其值清零,但是后来发现并不可行,但是在学集合时,学过清零:

void   clear()             
清空集合中的元素 

利用这个方法我们解决了上面的问题,后面的随机获取四支队伍,如果学习了set集合,就不是问题。但是如果没有学习set集合,在这里我是有两种思路,第一:一个队伍分配进组之后就在总集合中删去它的数据,这样就不会有重复的问题,第二:如果不想删去集合,那么就先将录入的索引记录在另外一个集合中,在利用关键字:continue;我们可以把已存入的和没有存入的进行对比,做个if判断,如果发现了有相同的,就跳过。
而在这我们用第一种方法:

 public static void main(String[] args) {
        List<String> c = new ArrayList<>();
        ArrayList<String> c1=new ArrayList<>();
        c.add("科特迪瓦");c.add("阿根廷");c.add("澳大利亚");c.add("塞尔维亚");
        c.add("荷兰");c.add("尼日利亚");c.add("日本");c.add("美国");
        c.add("中国");c.add("新西兰");c.add("巴西");c.add("比利时");
        c.add("韩国");c.add("喀麦隆");c.add("洪都拉斯");c.add("意大利");
        Random r = new Random();

        for(int i=0;i<4;i++){//第一层做四组的循环
            System.out.println("这是第"+(i+1)+"组");
            for(int j=0;j<4;j++){//第二层做每一组的循环
                int i1 = r.nextInt(c.size());//随机获取一个数
                String s = c.get(i1);//接收随机的队伍
                c1.add(s);//给到这个集合中去
                c.remove(i1);//删除已经分组的队伍
            }
            System.out.println(c1);
            c1.clear();//清除这一组的数据,接收下一组
        }
    }

注意:
随机获取的这串代码,必须放在第二个for循环下,总共获取16次随机数,随机数的取值区间,也随着改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值