集合框架(练习题)

Key Point:

  • Collection 接口、Set接口、List接口基本操作
  • List接口及其实现类
  • Set接口及其实现类
  • 迭代遍历
  • Hash算法与hashCode方法
  • Comparable接口
  • Map接口及其实现类
  • 遍历Map
  • 泛型

问题:
1.填空

  • Collection接口的特点是元素是/对象/;
  • List接口的特点是元素/有/顺序,/可以/重复;
  • Set接口的特点是元素/无/顺序,/不可以/重复;
  • Map接口的特点是元素是/无序、无下标/,其中/值/可以重复,/键/不可以重复。

2.(List)有如下代码

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

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
		for(int i = 0 ;i<list.size();i++) {
   
			System.out.println(list.get(i));
		}
		System.out.println(list.toString());
	}

}
要求:
I.把//1处的代码补充完整,要求输出list中所有元素的内容
II.写出程序执行的结果
III.如果要把实现类由ArrayList换为LinkedList,应该改哪里?ArrayList和LinkedList使用上有什么区别?实现上有什么区别?
IV。如果要把实现类由ArrayList换为Vector,应该改哪里?ArrayList和Vector使用上有什么区别?实现上有什么区别?
//II.[Hello, Java, Learn, World]
//III.List list = new LinkedList()
 - ArrayList【重点】:
 数组结构实现,查询快、增删慢;
 JDK1.2版本,运行效率快、线程不安全。
 JDK8的ArrayList,实际初始长度是0
首次添加元素时,需要实际分配数组空间,执行数组扩容操作
真正向数组中插入数据,用的时候再创建,或再加载,有效的减低无用内存的空间。
可用于展示时——查询居多
   - LinkedList:
 链表结构实现,增删快,查询慢。空间存储不连续,线程不安全。
 常用于购物车——增删频繁
 // IV.List list = new Vector()
 - Vector:
 数组结构实现,查询快、增删慢;内存空间连续,初始大小10,java的最早集合。

3.(List)写出下面程序的运行结果

import java.util.ArrayList;
import java.util.List;
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

4.(Set,List)

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class TestListSet {
   
	public static void main(String[] args) {
   
		
		List<String>list = new ArrayList<String>();
		
		list.add("Hello");
		list.add("Learn");
		list.add("Hello");
		list.add("Welcome");
		list.remove("Hello");
		Set<String> set = new HashSet<String>();
		set.addAll(list);
		System.out.println(set.size());
	}
}
//编译运行正常,输出3

5.(List)已知有一个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 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000 
li4 25 3500 
wang5 22 3200 
2) 在 li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300 
3) 删除 wang5 的信息
4) 利用 for 循环遍历,打印 List 中所有工人的信息
5) 利用迭代遍历,对 List 中所有的工人调用 work 方法。
6) 为 Worker 类添加 equals 方法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Worker {
   
	private int age;
	private String name;
	private double salary;
	public Worker() {
   }
	public Worker( String name,int age, doubl
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值