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); } }