有关集合的知识

1.已知有一个Worker 类如下: 

public class Worker { 
  private int age; 
  private String name; 
  private double salary; 
  public Worker (){ 
 
  } 
  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”); 
  }
}

完成下面的要求 
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 方法。 

package Home;

public class Worker {
    private int age;
    private String name;
    private double salary;
    public Worker (){

    }
    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 +
                '}';
    }
}

package Home;

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

public class Task1 {
    public static void main(String[] args) {
        /**
         * 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 方法。
         */
        List<Worker> workers = new ArrayList<>();
        workers.add(new Worker("zhang3" , 18 , 3000));
        workers.add(new Worker("li4" , 25 , 3500));
        workers.add(new Worker("wang5" , 22 , 3200));
        System.out.println(workers);
        // 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
        int index = 0; // 保存li4在集合中的下标
        for (int i = 0; i < workers.size(); i++) {
            if (workers.get(i).getName().equals("li4")){
                index = i;
            }
        }
        System.out.println("li4在集合中的下标:"+index);
        // 插入 zhao6
        workers.add(index , new Worker("zhao6" , 24 , 3300));
        System.out.println(workers);

        // 删除wang5 的信息
        Iterator<Worker> it = workers.iterator();
        while (it.hasNext()){ // 集合中是否还有下一个元素?
            Worker worker = it.next(); // 获取下一个元素
            if (worker.getName().equals("wang5")){ // 如果名字是  wang5
                it.remove(); // 删除   注意一定使用迭代器提供的删除方法  否则报错
//                workers.remove(worker); // 运行报错
            }
        }
        System.out.println(workers);

        // 利用增强for 循环遍历,打印List 中所有工人的信息
        for(Worker worker : workers){
            System.out.println(worker);
        }

        // 利用迭代遍历,对List 中所有的工人调用work 方法。
        Iterator<Worker> it2 = workers.iterator();
        while (it2.hasNext()){
            Worker worker = it2.next();
            worker.work();
        }

//        Worker w = new Worker("zhang3" , 18 , 3000);
//        System.out.println(w);
//        System.out.println(Integer.toHexString(w.hashCode()));

    }
}


2.去除集合中字符串的重复值(要求使用 ArrayList)  
  执行结果如下:
   旧集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 李玉伟, 王健林, 马云, 雷军]
   新集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 王健林, 马云, 雷军]

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

public class Task2 {
    public static void main(String[] args) {
        /**
         * 2.去除集合中字符串的重复值(要求使用 ArrayList)
         *   执行结果如下:
         *    旧集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 李玉伟, 王健林, 马云, 雷军]
         *    新集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 王健林, 马云, 雷军]
         */
        String[] strArr = {"李玉伟", "李嘉诚", "马化腾", "刘强东", "李玉伟","李玉伟", "王健林", "马云", "雷军"};
        // 数组转换我集合
        List<String> list1 = Arrays.asList(strArr);
//        Object[] objects = list.toArray();   // 集合  转  数组
        System.out.println(list1);

        List<String> list = new ArrayList<>();
        list.addAll(list1);
        System.out.println(list);

        // 获取集合中每一个元素  与  其他元素  依次比较  若有相同的 删除即可
        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);
        System.out.println("----------------");

    }


    public static void test(){
        ArrayList<String> arrList = new ArrayList<>();
        arrList.add("李玉伟");
        arrList.add("李嘉诚");
        arrList.add("马化腾");
        arrList.add("刘强东");
        arrList.add("李玉伟");
        arrList.add("李玉伟");
        arrList.add("李玉伟");
        arrList.add("王健林");
        arrList.add("马云");
        arrList.add("雷军");
        for (int i = 0; i < arrList.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (arrList.get(i).equals(arrList.get(j))) {
                    arrList.remove(j);
                    j--;
                }
            }
        }
        System.out.println(arrList.toString());
    }
}

3.分析以下需求,并用代码实现:(使用ArrayList)
(1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
(2)编写方法对List集合进行排序
(2)然后利用迭代器遍历集合元素并输出
(3)如:15 18 20 40 46 60 65 70 75 91

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

public class Task3 {
    public static void main(String[] args) {
        /**
         * 3.分析以下需求,并用代码实现:(使用ArrayList)
         * (1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
         * (2)编写方法对List集合进行排序
         * (3)然后利用迭代器遍历集合元素并输出
         *   如:15 18 20 40 46 60 65 70 75 91
         */
        List<Integer> list = new ArrayList<>();
        while (list.size() < 10){
            // Math.random()   0-1
            int ranNum = (int)(Math.random() * 100 + 1);
            if (!list.contains(ranNum)){ // 若当前集合中 不包含该随机数
                list.add(ranNum);
            }
        }
//        for (int i = 0; i < 10; ) {
//            // Math.random()   0-1
//            int ranNum = (int)(Math.random() * 100 + 1);
//            if (!list.contains(ranNum)){ // 若当前集合中 不包含该随机数
//                list.add(ranNum);
//                i++;
//            }
//        }
        System.out.println(list);
        System.out.println(list.size());
        List<Integer> sortList = sortList(list);
        System.out.println("排序后:"+sortList);


        //然后利用迭代器遍历集合元素并输出
        Iterator<Integer> it = sortList.iterator();
        while (it.hasNext()){
            Integer i = it.next();
            System.out.print(i + " ");
        }
    }

    // 编写方法对List集合进行排序
    public static List<Integer> sortList(List<Integer> list){
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = 0; j < list.size() - i - 1; j++) {
                // 相邻两个元素作比较 前者 > 后者  ==>  交换位置
                if (list.get(j) > list.get(j + 1)){
                    int temp = list.get(j);
                    list.set(j , list.get(j + 1));
                    list.set(j + 1 , temp);
                }
            }
            System.out.println("第"+ (i + 1) + "次排序结果:" + list);
        }
        return  list;
    }
}

4.编写一个类Book,具有name,price,press(出版社),author 然后创建5个对象放入ArrayList中,并实现按照price大小排序,
然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。

public class Book {
    // name,price,press(出版社),author
    private String name ;
    private double price ;
    private String press ;
    private String author ;

    public Book() {
    }

    public Book(String name, double 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 double getPrice() {
        return price;
    }

    public void setPrice(double 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 + '\'' +
                '}';
    }



}

import java.util.Comparator;

// 定义 书类型的  比较器
public 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;
        }
        return 0;
    }
}

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

public class Task4 {
    public static void main(String[] args) {
        /**
         * 4.编写一个类Book,具有name,price,press(出版社),author
         * 然后创建5个对象放入ArrayList中,并实现按照price大小排序,
         * 然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。
         */
        Book book1 = new Book("凡人修仙传", 100.5 , "人民教育出版社", "忘语");
        Book book2 = new Book("斗罗大陆", 80.5 , "人民教育出版社", "唐家三少");
        Book book3 = new Book("斗破苍穹", 60.5 , "人民教育出版社", "天蚕土豆");
        Book book4 = new Book("吞噬星空", 40.5 , "人民教育出版社", "我吃西红柿");
        Book book5 = new Book("诡秘之主", 20.5 , "人民教育出版社", "爱潜水的乌贼");

        List<Book> books = new ArrayList<>();
        books.add(book1);
        books.add(book2);
        books.add(book3);
        books.add(book4);
        books.add(book5);
        System.out.println(books);

        BookComparator bookComparator = new BookComparator();
        books.sort(bookComparator);
//        Collections.sort(books, (b1,b2)->{
//            // 定义比较规则
//            if (b1.getPrice() > b2.getPrice()){
//                return 1;
//            }else if (b1.getPrice() < b2.getPrice()){
//                return -1;
//            }
//            return 0;
//        });
        System.out.println(books);

        System.out.println("------------");
        for (Book book : books){
            System.out.println(book);
        }



    }
}

5.使用List集合存储10个学生信息。
学生信息:姓名,年龄,成绩。
统计所有姓“张”的同学的平均成绩。

public class Student {
    private String name ;
    private int age ;
    private double score ;

    public Student() {
    }

    public Student(String name, int age, double score) {
        this.name = name;
        this.age = age;
        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 double getScore() {
        return score;
    }

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

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

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

public class Task5 {
    public static void main(String[] args) {

//        5.使用List集合存储10个学生信息。
//        学生信息:姓名,年龄,成绩。
//        统计所有姓“张”的同学的平均成绩。

        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student("张三", 20 , 90) );
        studentList.add(new Student("赵三", 23 , 67) );
        studentList.add(new Student("李三", 20 , 54) );
        studentList.add(new Student("张si", 20 , 87) );
        studentList.add(new Student("张2", 20 , 57) );
        studentList.add(new Student("张6", 20 , 87) );
        studentList.add(new Student("张7", 20 , 34) );
        studentList.add(new Student("张8", 20 , 67) );
        studentList.add(new Student("王三", 20 , 98) );
        studentList.add(new Student("张三", 20 , 80) );

        double sumScore = 0; // 姓张的同学的总成绩
        int index = 0 ;// 姓张的同学的人数
        for (int i = 0; i < studentList.size(); i++) {
            if (studentList.get(i).getName().startsWith("张")){
                index ++; // 姓张的同学的人数 + 1
                sumScore += studentList.get(i).getScore();
            }
        }
        double avg = sumScore / index ;
        System.out.println("平均分:" + avg);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值