Java 泛型与集合框架

第一题

创建一个元素是字符串的ArrayList对象,在其中添加若干元素,通过使用索引循环访问将其中每个字符串转换成大写

代码一

package com.hzcollege.Arr;

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

/**
 * @author hhh
 * @version 1.8.0
 * 创建一个元素是字符串的ArrayList对象,在其中添加若干元素
 * 通过使用索引循环访问将其中每个字符串转换成大写
 */
public class Transition {
    
    
    public static void main(String[] args) {
    
    
        //创建元素为字符串的ArrayList对象
        ArrayList< String > arrs = new ArrayList<>();
        //调用add方法添加元素
        arrs.add("can");
        arrs.add("not");
        arrs.add("go");
        arrs.add("back");
        //method_1
        for (int i = 0; i < arrs.size(); i++){
    
    
            //获取元素
            String str = arrs.get(i);
            //转换成大写字母
            str = str.toUpperCase();
            //修改当前元素
            arrs.set(i,str);
        }
        //输出数组中的元素
        System.out.println("method_2");
        System.out.println(arrs);

        //method_2
        //获取迭代器
        Iterator<String> itr = arrs.iterator();
        ArrayList<String> arrs1 = new ArrayList<>();
        // hasNext() 用于检测集合中是否还有元素
        while (itr.hasNext()){
    
    
            // next() 会返回迭代器的下一个元素,并且更新迭代器的状态
            String str = (String)itr.next();
            //转换成大写字母
            str = str.toUpperCase();
            //remove() 将迭代器返回的元素删除
            itr.remove();
            //调用add方法添加元素
            arrs1.add(str);
        }
        //将元素全部添加到arrs中,覆盖之前的元素
        arrs.addAll(arrs1);
        //输出数组中的元素
        System.out.println("method_2");
        System.out.println(arrs);

        //method_3
        //将数组中所有String元素转换成大写
        arrs.replaceAll(String::toUpperCase);
        //输出数组中的元素
        System.out.println("method_3");
        System.out.println(arrs);
    }
}


运行结果一

在这里插入图片描述

第二题

编写程序,将一个字符串中的单词解析出来,然后将它们添加到一个HashSet中,并输出每个重复的单词,不同单词的个数及消除重复单词后的列表

代码二

package com.hzcollege.Arr;

import java.util.HashSet;
import java.util.Set;

/**
 * @author hhh
 * @version 1.8.0
 * 编写程序,将一个字符串中的单词解析出来,然后将它们添加到一个HashSet中
 * 并输出每个重复的单词,不同单词的个数及消除重复单词后的列表
 */
public class Find {
    
    
    public static void main(String[] args) {
    
    
        String s = "Can not go back Do not look back";
        //创建元素为字符串的set对象,set集合不存在重复单词
        //存放不重复单词
        Set<String> ss = new HashSet<>();
        //存放重复单词
        Set<String> ss1 = new HashSet<>();
        //将一个字符串分割为子字符串,然后将结果作为字符串数组返回
        String[] arr = s.split(" ");
        //增强for循环,为set集合添加元素
        for (String str : arr) {
    
    
            //如果不重复添加到ss,如果重复添加到ss1
            if (!ss.add(str)) {
    
    
                ss1.add(str);
            }
        }
        System.out.println("重复的单词:" + ss1);
        System.out.println("不同单词的个数:" + ss.size());
        System.out.println("消除重复单词后的列表:" + ss);
    }
}


运行结果二

在这里插入图片描述

第三题

定义Student类,有学号ID、姓名name、年龄age等属性,要求按照学号依次输出学生信息

代码三

package com.hzcollege.Arr;

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

/**
 * @author hhh
 * @version 1.8.0
 * 定义Student类,有学号ID、姓名name、年龄age等属性
 * 要求按照学号依次输出学生信息
 */
public class Student implements Comparable<Student>{
    
    
    private int id;
    private String name;
    private int age;

    public int getId() {
    
    
        return id;
    }

    public void setId(int id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public Student() {
    
    
    }

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

    @Override
    public String toString() {
    
    
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    //按升序排序
    @Override
    public int compareTo(Student st) {
    
    
        return this.id - st.id;
    }

    public static void main(String[] args) {
    
    
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, "一号", 19));
        list.add(new Student(3, "三号", 20));
        list.add(new Student(2, "二号", 18));
        //调用sort方法进行排序
        Collections.sort(list);
        for (Student s : list) {
    
    
            System.out.println(s);
        }
    }
}

运行结果三

在这里插入图片描述

总结

掌握ArrayList类的使用,以及add() 方法,addAll()方法,replaceAll()方法的使用
迭代器的使用,其中hasNext() 用于检测集合中是否还有元素, next() 会返回迭代器的下一个元素,并且更新迭代器的状态,remove() 将迭代器返回的元素删除
String类中的toUpperCase()方法,是将其转化成大写字母
split()将一个字符串分割为子字符串,然后将结果作为字符串数组返回
熟悉了Set接口和HashSet实现类的使用 ,Set集合中不会有重复元素出现
实现Comparable< T >接口需要重写compareTo()方法,然后使用Collections类的sort()方法对集合对象进行排序

猜你喜欢

转载自blog.csdn.net/qq_54388490/article/details/125186313