有关集合的小练习

有关集合的小练习

  1. 产生10个1-100的随机数,并放到一个数组中,
    把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class HW01 {
    public static void main(String[] args) {
        int[] arr= new int[100];
        for (int i = 0; i < arr.length; i++) {
            arr[i]=(int)(Math.random()*99+1);
        }
        System.out.println(Arrays.toString(arr));
        List<Integer> list = new ArrayList<>();
        for (Integer i : arr) {
            if(i>=10){
                list.add(i);
            }
        }
        System.out.println(list);
    }
}

    
  1. 已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位

String[] strs ={"12345","67891","12347809933","98765432102","67891","12347809933"}。
  将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,
  将list中所有元素分别用迭代器和增强for循环打印出来。

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class HW02 {
    public static void main(String[] args) {
        String[] strs ={"12345","67891","12347809933","98765432102","67891","12347809933"};
        List<String> list=new LinkedList<>();
        for (String str : strs) {
                if(list.indexOf(str)==-1){
                    list.add(str);
                }
        }

        Iterator<String> it = list.iterator();
        System.out.print("[");
        while (it.hasNext()){
            System.out.print(it.next());
            if(it.hasNext()){
                System.out.print(", ");
            }
        }
        System.out.println("]");
        for (String str :
                list) {
            System.out.print(str+" ");
        }
    }
}
  1. 用Comparable接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。
    提示:
    编写一个Student类用来实现Comparable<Student>接口,并在其中重写CompareTo(Student o)方法

import java.util.ArrayList;
import java.util.List;

public class HW03 {
    public static void main(String[] args) {
        List<Student> li = new ArrayList<>();
        li.add(new Student("liusan", 20, 90.0F));
        li.add(new Student("lisi", 22, 90.0F));
        li.add(new Student("wangwu", 20, 99.0F));
        li.add(new Student("sunliu", 22, 100.0F));
        Student st = new Student(null, 0, 0);
        System.out.println(li);
        for (int i = 0; i < li.size(); i++) {
            for (int j = 0; j < li.size() - i - 1; j++) {
                if (li.get(j).compareTo(li.get(j + 1)) == -1) {
                    st = li.get(j);
                    li.set(j, li.get(j + 1));
                    li.set(j + 1, st);
                }
            }
        }
        System.out.println(li);
        
    }

}

class Student implements Comparable<Student> {
    private String name;
    private int age;
    private float num;
    
    public Student(String name, int age, float num) {
        this.name = name;
        this.age = age;
        this.num = num;
    }

    @Override
    public int compareTo(Student s) {

        if (!(s instanceof Student) || s == null) {
            throw new RuntimeException("类型不同无法比较");
        } else if (this.num > s.num) {
            return 1;
        } else if (this.num == s.num) {
            if (this.age < s.age) {
                return 1;
            } else {
                return -1;
            }
        } else {
            return -1;
        }

    }
}
  1. 现在有一个map集合如下:

Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(1, "张三丰");
        map.put(2, "周芷若");
        map.put(3, "汪峰");
        map.put(4, "灭绝师太");
        

要求:
1.遍历集合,并将序号与对应人名打印。
2.向该map集合中插入一个编码为5姓名为李晓红的信息
3.移除该map中的编号为1的信息
4.将map集合中编号为2的姓名信息修改为"周林"
5.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class HW04 {
    public static void main(String[] args) {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "张三丰");
        map.put(2, "周芷若");
        map.put(3, "汪峰");
        map.put(4, "灭绝师太");

        Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        map.put(5, "李晓红");
        System.out.println(map);
        map.remove(1);
        System.out.println(map);
        map.put(2,"周林");
        System.out.println(map);
    }
}

  1. 已知有十六支男子足球队参加2020 奥运会。写一个程序,把这16 支球队随机分为4 个组。
    采用List集合和随机数
    2020 奥运会男足参赛国家:
    科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,
    新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class HW05 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("科特迪瓦");
        list.add("阿根廷");
        list.add("澳大利亚");
        list.add("塞尔维亚");
        list.add("荷兰");
        list.add("尼日利亚");
        list.add("日本");
        list.add("美国");
        list.add("中国");
        list.add("新西兰");
        list.add("巴西");
        list.add("比利时");
        list.add("韩国");
        list.add("喀麦隆");
        list.add("洪都拉斯");
        list.add("意大利");
        System.out.println(list);
        Iterator<String> it = list.iterator();
        List<String> list1 = new ArrayList<>();
        List<String> list2 = new ArrayList<>();
        List<String> list3 = new ArrayList<>();
        List<String> list4 = new ArrayList<>();
        List<String> list5 = new ArrayList<>();
        while (it.hasNext()) {
            for (int i = 0; i < list.size(); i++) {
                int t = (int) (Math.random() * list.size());
                if (list1.indexOf(list.get(t)) == -1) {
                    list1.add(list.get(t));
                    list.remove(t);
                } else {
                    i = i - 1;
                }
            }
        }
        System.out.println(list1);
        for (int i = 0; i < 4; i++) {
            list2.add(list1.get(i));
            list1.remove(i);
        }
        for (int i = 0; i < 4; i++) {
            list3.add(list1.get(i));
            list1.remove(i);
        }
        for (int i = 0; i < 4; i++) {
            list4.add(list1.get(i));
            list1.remove(i);
        }
        list5.addAll(list1);
        System.out.println("第一队:"+list2+"\n"+"第二队:"+list3+"\n"+"第三队:"+list4+"\n"+"第四队:"+list5);
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值