- 创建一个List,在List 中增加三个工人,基本信息如下:
* 姓名 年龄 工资
* zhang3 18 3000
* li4 25 3500
* wang5 22 3200
* 2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
* 3) 删除wang5 的信息
* 4) 利用for 循环遍历,打印List 中所有工人的信息
* 5) 利用迭代遍历,对List 中所有的工人调用work 方法。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class HomeWork01 {
public static void main(String[] args) {
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.2.去除集合中字符串的重复值(要求使用 ArrayList)
* 执行结果如下:
* 旧集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 李玉伟, 王健林, 马云, 雷军]
* 新集合为:[李玉伟, 李嘉诚, 马化腾, 刘强东, 王健林, 马云, 雷军]
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class HomeWork02 {
public static void main(String[] args) {
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.3.分析以下需求,并用代码实现:(使用ArrayList)
* (1)生成10个1至100之间的随机整数(不能重复),存入一个List集合
* (2)编写方法对List集合进行排序
* (3)然后利用迭代器遍历集合元素并输出
* 如:15 18 20 40 46 60 65 70 75 91
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class HomeWork03 {
public static void main(String[] args) {
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.4.编写一个类Book,具有name,price,press(出版社),author
* 然后创建5个对象放入ArrayList中,并实现按照price大小排序,
* 然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。
import java.util.*;
public class HomeWork04 {
public static void main(String[] args) {
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 HomeWork05 {
public static void main(String[] args) {
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集合中,并打印到控制台
public class HomeWork06 {
public static void main(String[] args) {
```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);
}
}