Java SE(4)

该代码示例展示了如何在Java中使用List进行一系列操作,包括添加和删除Worker对象,遍历并调用工作方法,以及处理集合中的重复值。此外,还包含了生成不重复随机数、排序和按特定属性(如价格)对对象列表进行排序的示例。
摘要由CSDN通过智能技术生成
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
//2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
//3) 删除wang5 的信息
//4) 利用for 循环遍历,打印List 中所有工人的信息
//5) 利用迭代遍历,对List 中所有的工人调用work 方法。
public static void main(String[] args) {
        1) 创建一个List,在List 中增加三个工人,基本信息如下:
            姓名      年龄    工资
            zhang3   18      3000
            li4           25      3500
            wang5    22      3200
        List<Worker> l=new ArrayList<>();
        l.add(new Worker("zhang3",18,3000));
        l.add(new Worker("li4",25,3500));
        l.add(new Worker("wang5",22,3200));
        System.out.println(l);
        //2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
        int indexli4=0;
        for (int i = 0; i <l.size() ; i++) {
            if(l.get(i).getName().equals("li4")){
                indexli4=i;
            }
        }
        l.add(indexli4,new Worker("zhao6",24,3300));
        System.out.println(l);

        //3) 删除wang5 的信息

//        int indexWangwu=0;
//        for (int i=0;i<l.size();i++){
//            if(l.get(i).getName().equals("wang5")){
//                indexWangwu=i;
//            }
//        }
//        l.remove(indexWangwu);

            //  迭代器
        Iterator<Worker> iterator=l.iterator();
        while(iterator.hasNext()){
            Worker next = iterator.next();
            if(next.getName().equals("wang5")){
                iterator.remove();  //  注意一定使用迭代器的删除方法
            }
        }
        System.out.println(l);
        //4) 利用for 循环遍历,打印List 中所有工人的信息
        for (Worker list:l) {
            System.out.println(list);
        }
        //5) 利用迭代遍历,对List 中所有的工人调用work 方法。
        Iterator<Worker> iterator1 = l.iterator();  //  构造迭代器
        while(iterator1.hasNext()){
            Worker next = iterator1.next();
            next.work();
        }


    }
    public static class  Worker {
        private int age;
        private String name;
        private double salary;
        public Worker (String name, int age, double salary){
            this.name = name;
            this.age = age;
            this.salary = salary;
        }

        public int getAge() { return age; }

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

        public String getName() { return name; }

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

        public double getSalary(){ return salary; }

        public void setSalary(double salary){ this.salary = salary; }

        public void work(){
            System.out.println(name + "work" );
        }

        @Override
        public String toString() {
            return "Worker{" +
                    "age=" + age +
                    ", name='" + name + '\'' +
                    ", salary=" + salary +
                    '}';
        }
    }
/**
*2.去除集合中字符串的重复值(要求使用 ArrayList)
* 执行结果如下:
* 旧集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 李玉伟, 王健林, 马云, 雷军]
* 新集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 王健林, 马云, 雷军]
*/
 List<String> l=new ArrayList<>( );
        l.add("李玉伟");
        l.add("李嘉诚");
        l.add("马化腾");
        l.add("李玉伟");
        l.add("李玉伟");
        l.add("李玉伟");
        l.add("刘强东");
        l.add("李玉伟");
        l.add("王健林");
        l.add("马云");
        l.add("雷军");
        List<String> l2=new ArrayList<>();
        Iterator<String> z= l.iterator();
        while (z.hasNext()){
            String next = z.next();
            if(!l2.contains(next)){
                l2.add(next);
            }
        }
        System.out.println(l2);

        // 数组转集合的方式
        String[] strArr={"李玉伟", "李嘉诚", "马化腾", "刘强东", "李玉伟", "王健林", "马云", "雷军"};
        List<String> list1 = Arrays.asList(strArr);
        List<String> list = new ArrayList<>();
        list.addAll(list1);
        for (int i = 0; i < list.size(); i++) {
            for (int j = i+1; j <list.size() ; j++) {
                if(list.get(i).equals(list.get(j))){
                    list.remove(j);
                    j--;
                }
            }
        }
        System.out.println(list);
//3.分析以下需求,并用代码实现:(使用ArrayList)
// (1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
// (2)编写方法对List集合进行排序
// (2)然后利用迭代器遍历集合元素并输出
// (3)如:15 18 20 40 46 60 65 70 75 91
public static void main(String[] args) {
        //3.分析以下需求,并用代码实现:(使用ArrayList)
        // (1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
        // (2)编写方法对List集合进行排序
        // (2)然后利用迭代器遍历集合元素并输出
        // (3)如:15 18 20 40 46 60 65 70 75 91

        // (1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
        List<Integer> l = new ArrayList<>();
        List<Integer> l2 = new ArrayList<>();
        while (true) {
            int x = (int) (Math.random() * 100);
            l.add(x);
            Iterator<Integer> i = l.iterator();
            while (i.hasNext()) {
                Integer next = i.next();
                if (!l2.contains(next)) {
                    l2.add(next);
                }
            }
            if (l.size() == 10) {
                break;
            }
        }
        // (2)编写方法对List集合进行排序
        Collections.sort(l);
        System.out.println(l);
        // (3)然后利用迭代器遍历集合元素并输出
        Iterator<Integer> i1 = l.iterator();
        while (i1.hasNext()) {
            Integer next = i1.next();
            System.out.println(next);
        }



     }
     //  排序方法
   public static List<Integer> sortList(List<Integer> l){
       for (int i = 0; i <l.size() ; i++) {
           for (int j = 0; j <l.size()-i-1 ; j++) {
               if(l.get(j)>l.get(j+1)){
                   int temp=l.get(j+1);
                   l.set(j,l.get(j+1));
                   l.set(j+1,temp);
               }
           }
       }
        return l;
   }
//4.编写一个类Book,具有name,price,press(出版社),author
// 然后创建5个对象放入ArrayList中,
// 并实现按照price大小排序,
//然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。
   public static void main(String[] args) {
        List<Book> book =new ArrayList<>();
        book.add(new Book("家",23,"中国邮政出版社","巴金"));
        book.add(new Book("春",26,"中国邮政出版社","巴金"));
        book.add(new Book("秋",30,"中国邮政出版社","巴金"));
        book.add(new Book("雾",27,"中国邮政出版社","巴金"));
        book.add(new Book("雨",24,"中国邮政出版社","巴金"));
        BookComparator bookComparator=new BookComparator();
        book.sort(bookComparator);
        System.out.println(book);
        Iterator<Book> i= book.iterator();
        while (i.hasNext()){
            Book next = i.next();
            System.out.println(next.toString());
        }
    }

}
class Book {
    String name;
    int price;
    String press;
    String author;

    public Book(String name, int price, String press, String author) {
        this.name = name;
        this.price = price;
        this.press = press;
        this.author = author;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getPress() {
        return press;
    }
    public void setPress(String press) {
        this.press = press;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", press='" + press + '\'' +
                ", author='" + author + '\'' +
                '}';
    }

}
//  比较器
class BookComparator implements Comparator<Book>{

     //  定义比较规则
    @Override
    public int compare(Book b1, Book b2) {
        if(b1.getPrice()>b2.getPrice()){
            return 1;
        }else if(b1.getPrice()<b2.getPrice()){
            return -1;
        }else {
            return 0;
        }
    }
}
//5.使用List集合存储10个学生信息。
//学生信息:姓名,年龄,成绩。
//统计所有姓“张”的同学的平均成绩。
 public static void main(String[] args) {
        List<Student> l=new ArrayList<>();
        l.add(new Student(21,"张三",60));
        l.add(new Student(22,"李四",65));
        l.add(new Student(23,"王五",70));
        l.add(new Student(24,"赵六",65));
        l.add(new Student(25,"张大",66));
        l.add(new Student(26,"张二",78));
        l.add(new Student(27,"张三",87));
        l.add(new Student(28,"王三",43));
        l.add(new Student(29,"赵四",65));
        l.add(new Student(20,"压缩",90));

        int index=0;
        double sumScore=0;
        for (int i = 0; i < l.size(); i++) {
            if(l.get(i).getName().startsWith("张")){
                index++;
                sumScore+=l.get(i).getScore();
            }
        }
        double avg=sumScore/index;
        System.out.println("平均分"+avg);
    }

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

    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 int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}
//6.产生10个1-100的随机数,并放到一个数组中,
// 把数组中大于等于10的数字放到一个list集合中,并打印到控制台
 public static void main(String[] args) {
        List<Integer> l=new ArrayList<>();
        int[] arr=new int[10];
        for (int i = 0; i < arr.length ; i++) {
            arr[i]=(int)(Math.random()*100);
            if(arr[i]>10){
                l.add(arr[i]);
            }
        }
        System.out.println(Arrays.toString(arr));
        System.out.println(l);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值