Day.24 集合作业、小测试

  • 第一题
/*6.定义一个泛型为String类型的List集合,统计该集合中每个字符
        (注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素,
        程序最终输出结果为:“a = 1,b = 2,c = 2,d = 1”。*/
public class Work6 {
    public static void main(String[] args) {

        List<String> li = new ArrayList<>();
        li.add("abc");
        li.add("bcd");
        //思路:1.将集合中每个String转换为char数组,遍历该数组,
        //     2.新建Map集合,通过键值对反映每个char出现次数
        Map<Character, Integer> map = new HashMap<>();  //注意,基本数据要装箱

        for(int i = 0; i<li.size() ;i++){
            char[] ca = li.get(i).toCharArray(); //转换为char数组
            for(char c : ca){                   //遍历该数组
                if(!(map.containsKey(c))){     //如果map集合中没有c,新建一个c节点
                    map.put(c,1);
                }else{
                    map.put(c,(map.get(c)+1)); //如果map集合中没有c,c指向节点Value+1
                }
            }
        }
        System.out.println(map);
    }
}
  • 第二题
/*5.有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],
        第二个数组为:[哈尔滨,杭州,南昌,广州,福州],
        将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。
        如{黑龙江省=哈尔滨, 浙江省=杭州, …}*/
public class Work5 {
    public static void main(String[] args) {

        String[] s1 = {"黑龙江省","浙江省","江西省","广东省","福建省"};
        String[] s2 = {"哈尔滨","杭州","南昌","广州","福州"};

        Map<String,String> sm = new HashMap<>();

        for (int i = 0; i < s1.length; i++) {
            sm.put(s1[i],s2[i]);
        }
        //遍历Map数组
        Set<Map.Entry<String,String>> set = sm.entrySet();
        for(Map.Entry<String,String> node : set){
            System.out.print(node.getKey() +"="+node.getValue()+",");
        }
    }
}
  • 第三题
/*3.分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样,
        那在成绩排序的基础上按照年龄由小到大排序。

        姓名(String)年龄(int)分数(float)
        张三			20				90.0F
        李四				22				90.0F
        王五			20				99.0F
        赵六			22				100.0F

        编写一个Student类用来实现Comparable<Student>接口,并在其中重写CompareTo(Student o)方法 
        在主函数中使用Comparable 与 Comparetor分别对ArrayList进行排序.*/
public class Work3 {
    public static void main(String[] args) {
        Student zs = new Student("张三", 20, 90.0F);
        Student ls = new Student("李四", 22, 90.0F);
        Student ww = new Student("王五", 20, 99.0F);
        Student zl = new Student("赵六", 22, 100.0F);
        List<Student> stl = new ArrayList<Student>();          //创建数组
        stl.add(ls);
        stl.add(zl);
        stl.add(zs);
        stl.add(ww);
        //方式1
        //排序方法
/*        Collections.sort(stl);
        for(Student s : stl){
            System.out.println(s);
        }*/
        //方式2  Comparator比较器  创建Comparator匿名内部类方式
        Collections.sort(stl, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                if(s1.score == s2.score){
                    return s1.age - s2.age;
                }else{
                    //要求返回int类型
                    if(s1.score - s2.score > 0F){
                        return 1;
                    }else if(s1.score - s2.score < 0F){
                        return -1;
                    }else{
                        return 0;
                    }
                }
            }
        });
        for(Student s : stl){
            System.out.println(s);
        }
    }
}
//学生   排序方式1 :实现接口Comparble
class Student implements Comparable<Student>{
    String name;
    int age;
    float score;

    public Student(String name, int age, float score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    //实现compareTo方法 成绩排序的基础上按照年龄由小到大排序
    @Override
    public int compareTo(Student s) {
        if(this.score == s.score){
            return this.age - s.age;
        }else{
            //要求返回int类型
            if(this.score - s.score > 0F){
                return 1;
            }else if(this.score - s.score < 0F){
                return -1;
            }else{
                return 0;
            }
        }
    }

    @Override
    public String toString() {
        return "[" + "姓名='" + name + '\'' + ", 年龄=" + age + ", 成绩=" + score + ']';
    }
}
  • 第四题

2.已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}。
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来。
 

  • 第五题

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值