Java学习打卡Day23

知识总结

集合

  1. Collection体系集合:
    (1)Collection父接口:该体系结构的根接口,代表一组对象,称为“集合”,每个对象都是该集合的“元素”。
    (2)List接口的特点:有序、有下标、元素可重复。
    (3)Set接口的特点:无序、无下标、元素不可重复。
    2.List子接口:
    (1)特点:有序、有下标、元素可以重复。
    (2)继承可父接口提供的共性方法,同时定义了一些独有的与下标相关的操作方法。
    3.List实现类:
    (1)JDK8的ArrayList,实际初始长度是0
    (2)首次添加元素时,需要实际分配数组空间,执行数组扩容操作
    (3)真正向数组中插入数据,用的时候再创建,或再加载,有效的降低无用内存的占用
    4.ArrayList:
    (1)数组结构存储,查询快,增删慢。
    (2)JDK 1.2发布,执行效率快,线程不安全。
    5.Vector:
    (1)数组结构存储,查询快,增删慢。
    (2)JDK 1.0发布,执行效率慢,线程安全。
    6.LinkedList:
    链表(链接列表)结构存储,查询慢、增删快。

每日练习

  1. 有如下代码:
import java.util.*;

public class TestList {

	public static void main(String[] args) {
		List<String>list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		list.add("Learn");
		list.add("Java");
		printList(list);

	}
	public static void println(List list){
	//1
	
	}
}

要求:
(1)把//1处的代码补充完整,要求输出list中所有的元素内容
(2)写出程序的执行结果
(3)如果要把实现类由ArrayList换为LinkedList,应该改哪里?ArrayList和LinkedList使用上有什么区别?实现上有什么区别?
(4)如果要把实现类由ArrayList换为Vector,应该改哪里?ArrayList和Vector使用上有什么区别?实现上有什么区别?
答:(1)
for(int i = 0 ; i < list.size() ; i++){
System.out.println(list.get(i));
}
(2)
Hello
World
Learn
Java
(3)把Listlist = new ArrayList();
改为:List list = new LinkedList();
ArrayList:数组结构存储,查询快,增删慢
LinkedList:链表(链接列表)结构存储,查询慢、增删快
实现上利用接口引用,更改创建对象形式
(4)把Listlist = new ArrayList();
改为:List list = new Vector();
ArrayList:数组结构存储,查询快,增删慢,执行效率快,线程不安全
Vector:数组结构存储,查询快,增删慢,执行效率慢,线程安全
实现上利用接口引用,更改创建对象形式

  1. 写出下面程序的运行结果
import java.util.*;

public class TestList {

	public static void main(String[] args) {
		List<String>list = new ArrayList<String>();
		list.add("Hello");
		list.add("World");
		list.add("Hello");
		list.add("Learn");
		list.remove("Hello");
		list.remove(0);
		for(int i = 0 ; i < list.size() ; i++){
			System.out.println(list.get(i));
		}
	}
}

答:
Hello
Learn

  1. 已知有一个Worker类如下:
public class Worker {
	private int age;
	private String name;
	private double salary;
	public Worker(){}
	public Worker(int age, String name, double salary) {
		this.age = age;
		this.name = name;
		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中增加三个工人,基本信息如下
|姓名| 年龄|工资||--|--||  |  |
(2)在li4之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
(3)删除wang5 的信息
(4)利用for循环遍历,打印List中所有工人的信息
(5)利用for-each遍历,对List中所有的工人调用work方法
(6)为Worker类添加equals方法
答:

import java.util.*;

class Worker {
	private int age;
	private String name;
	private double salary;
	public Worker(){}
	public Worker(String name, int age,  double salary) {
		this.age = age;
		this.name = name;
		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");
	}
	public boolean equals(Object obj) {
		//比较地址是否一样
		if(this == obj){
			return true;
		}
		//确认对象不能为null
		if(obj == null){
			return false;
		}
		//确认类型
		if(obj.getClass() != this.getClass()){
			return false;
		}
		//转型
		Worker w = (Worker)obj;
		//比较内容
		if(this.name.equals(w.name) && this.age == w.age && this.salary == w.salary){
			return true;
		}
		return false;
	}
}
public class TestWorker{
	
	public static void main(String[] args){
		Worker worker1 = new Worker("zhang3",18,3000.0);
		Worker worker2 = new Worker("li4",25,3500.0);
		Worker worker3 = new Worker("wang5",22,3200.0);
		Worker worker4 = new Worker("zhao6",24,3300.0);
		List ll = new ArrayList();
		ll.add(worker1);
		ll.add(worker2);
		ll.add(worker3);
		ll.add(1, worker4);
		
		ll.remove(worker3);
		for(int i = 0 ; i < ll.size() ; i++){
			System.out.println(((Worker) ll.get(i)).getName() + "\t" + ((Worker) ll.get(i)).getAge() + "\t" + ((Worker) ll.get(i)).getSalary());
		}
		for(int i = 0 ; i < ll.size() ; i++){
			((Worker) ll.get(i)).work();
			}
		
}

发布了33 篇原创文章 · 获赞 3 · 访问量 912

猜你喜欢

转载自blog.csdn.net/qq_44952731/article/details/104659107
今日推荐