今天学习了集合的概念、Collection体系集合、List子接口和List实现类。
努力到无能为力,拼搏到感动自己!
加油!
2.(List)有如下代码
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)把//1 处的代码补充完整,要求输出 list 中所有元素的内容
2)写出程序执行的结果
3)如果要把实现类由 ArrayList 换为 LinkedList,应该改哪里?ArrayList 和 LinkedList 使用上有什么区别?实现上有什么区别?
4)如果要把实现类由 ArrayList 换为 Vector,应该改哪里?ArrayList 和 Vector 使用上有什么区别?实现上有什么区别?
第一问:
import java.util.ArrayList;
import java.util.List;
public class TestList {
public static void main(String args[]) {
List list = new ArrayList();
list.add("Hello");
list.add("World");
list.add(1, "Learn");
list.add(1, "Java");
printList(list);
}
public static void printList(List list) {
// 1
System.out.println(list);
}
}
第二问:
[Hello, Java, Learn, World]
第三问:
List list=new LinkedList();
ArrayList
1. 基于数组
2. 默认容量为10,每次扩容上一次的一半;内存空间连续
3. 增删元素较慢--移动元素
4. 查询较快--下标
5. 线程不安全
LinkedList
1. 基于链表
2. 内存空间不连续
3. 增删元素较快
4. 查询较慢
5. 线程不安全
第四问:
List list=new Vector();
Vector
1. 基于数组
2. 初始大小:10
3. 扩容:每次扩容一倍,内存空间连续
4. 增删较慢,查询较快
5. 线程安全
6. java的最早的集合
3.(List)写出下面程序的运行结果
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
5.(List)已知有一个 Worker 类如下:
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”);
}
}
完成下面的要求:
1)创建一个 List,在 List 中增加三个工人,基本信息如下
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2)在 li4 之前插入一个工人,信息为:
姓名:zhao6,年龄:24,工资 3300
3)删除 wang5 的信息
4)利用 for 循环遍历,打印 List 中所有工人的信息利用 for-each 遍历,对 List 中所有的工人调用 work 方法。
5)为 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.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");
}
public boolean equals(Object obj){
Worker w =(Worker)obj;
if(this.name==w.name
&&this.age==w.age
&&this.salary==w.salary){
return true;
}
return false;
}
}
public class Test5 {
public static void main(String[] args) {
// 1) 创建一个 List,在 List 中增加三个工人,基本信息如下:
// 姓名 年龄 工资
// zhang3 18 3000
// li4 25 3500
// wang5 22 3200
List<Worker>list = new ArrayList();
list.add(new Worker("zhang3",18,3000));
list.add(new Worker("li4",25,3500));
list.add(new Worker("wang5",22,3200));
// 2) 在 li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300
list.add(2, new Worker("zhao6",24,3300));
// 3) 删除 wang5 的信息
list.remove(3);
// 4) 利用 for 循环遍历,打印 List 中所有工人的信息
for (int i = 0; i < list.size(); i++) {
Worker w = list.get(i);
System.out.println(w.getName()+"\t"
+w.getAge()+"\t"+w.getSalary());
}
for (Worker worker : list) {
worker.work();
}
System.out.println(list.get(0)==list.get(1));
}
}