Day23

学习的第23天。

总结:

集合:

                Collection 体系集合:

                               Collection 父接口:该体系结构的根接口,代表一组对象,称为“集合”,每个对象都是该集合的“元素”。

                                                代表一组任意类型的对象

                               List 接口的特点:有序、有下标、元素可重复

                               Set 接口的特点:无序、无下标、元素不可重复

                

List 子接口:有序、有下标、元素可重复

                继承了父类接口提供的共性方法,同时定义了一些独有的与下标相关的操作方法。

List 实现类:

                ArrayList(JDK1.2版本出现):

                                JDK 8 的ArrayList ,实际初始长度是0。  首次添加元素时,需要实际分配数组空间,执行数组扩容操作。

                                数组结构存储(线性表),查询快,增删慢。线程不安全、效率相对快

                Vector(JDK1.0版本出现):

                                数组结构存储(线性表),查询快,增删慢。线程安全、效率相对慢

                LinkedList:

                                链表结构实现,增删快,查询慢           Queue、栈结构、队列结构

 

 

习题:

C10.2:  有如下代码:

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(1,"Learn");
        list.add(1,"Java");
        printList(list);
    }
    public static void printList(List list){
        //1
    }
}

                把//1处的代码补充完整,要求输出list中所有元素的内容:

System.out.println(list);

                写出程序执行的结果:

                                [Hello, Java, Learn, World]

                如果要把实现类由ArrayList换为LinkedList,应该改哪里?ArrayList 和 LinkedList 使用上有什么区别?实现上有什么区别?

       List<String> list=new LinkedList<String>();

                                ArrayList 查询快,增删慢; LinkedList 查询慢,增删快;   LinkedList 直接插入;ArrayList创建新的

                如果要把实现类由ArrayList换为Vector,应该改哪里?ArrayList 和 Vector 使用上有什么区别?实现上有什么区别?

        List<String> list=new Vector<String>();

                                ArrayList 速度快,安全差; Vector反之;  没区别

 

C10.3:  写出程序执行的结果:

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

 

C10.5  有如下代码:

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

                创建一个List:

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

public class test5 {

	public static void main(String[] args) {

		List<Worker> list=new ArrayList<Worker>();
		list.add(new Worker("zhang3",18,3000));
		list.add(new Worker("li4",25,3500));
		list.add(new Worker("wang5",22,3200));
		
	}

}

                在li4之前插入一个工人,信息为:姓名zhao6,年龄24,工资3300 :

public class test5 {

	public static void main(String[] args) {

		List<Worker> list=new ArrayList<Worker>();
		list.add(new Worker("zhang3",18,3000));
		list.add(new Worker("li4",25,3500));
		list.add(new Worker("wang5",22,3200));
		
		//2.在li4前插入zhao6
		list.add(1,new Worker("zhao6",24,3300));
		
		//3.删除wang5的信息
		list.remove(3);
		
		//4.用for遍历
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).getName()+"\t"+list.get(i).getAge()+"\t"+list.get(i).getSalary());
		}
		
		//5.用for-each遍历,对List中所有的工人调用work方法
		for (Worker i : list) {
			i.work();
		}
	}
}

                        为Worker类添加 equals 方法:

	public boolean equals(Object obj){
		if(obj==this){
			return true;
		}
		if(obj==null){
			return false;
		}
		if(this.getClass()!=obj.getClass()){
			return false;
		}
		Worker ww=(Worker)obj;
		if (this.age != ww.age)
			return false;
		if (this.name==null){
			if(ww.name != null){
				return false;
			}
		}else if(!name.equals(ww.name)) {
			return false;
		}
		if(this.salary!=ww.salary){
			return false;
		}
		return true;
	}

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值