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