1. Collection接口接上篇
2. Collection练习 503
1.创建3个Dog {name, age}对象,放入到ArrayList中,赋给List引用
2.用迭代器和增强for循环两种方式来遍历
3.重写Dog的toString方法, 输出name和age
代码在com.stulzl.collection_exercise01.包中
Exercise01
package com.stulzl.collection_exercise01;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
// Collection练习01 503
//1.创建3个Dog {name, age}对象,放入到ArrayList中,赋给List引用
//2.用迭代器和增强for循环两种方式来遍历
//3.重写Dog的toString方法,输出name和age
public class Exercise01 {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Dog("小黑",3));
list.add(new Dog("小花",7));
list.add(new Dog("小白",5));
//使用增强for循环
for (Object o :list) {
System.out.println("dog="+o);
}
System.out.println("===使用while循环===");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println("dog="+next);
}
}
}
class Dog{
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
3. List 接口基本介绍 504
List接口是Collection接口的子接口List java
1) List集合类中元素有序(即添加顺序和取出顺序一致)、 且可重复[案例]
2) List集合中的每个元素都有其对应的顺序索引,即支持索引。[案例]
3) List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
4) JDK API中List接口的实现类有:
4. List 接口的常用方法
//void add(int index, Object ele):在index位置插入ele元素,在index = 1的位置插入一个对象
//boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
//Object get(int index):获取指定index位置的元素
//int indexOf(Object obj):返回obj在集合中首次出现的位置
//int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
//Object remove(int index):移除指定index位置的元素,并返回此元素
// Object set(int index, Object ele):设置指定index位置的元素为ele , 相当于是替换.
// List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
注意返回的子集合 fromIndex <= subList < toIndex 即 [0,2)
代码在com.stulzl.list_method.包中
ListMethod
package com.stulzl.list_method;
import java.util.ArrayList;
import java.util.List;
//List常用方法
public class ListMethod {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三丰");
list.add("贾宝玉");
//void add(int index, Object ele):在index位置插入ele元素
//在index = 1的位置插入一个对象
list.add(1,"中国");
System.out.println("list="+list);
//boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
List list2 = new ArrayList();
list2.add("jack");
list2.add("tom");
list.addAll(1,list2);
System.out.println("list="+list);
// Object get(int index):获取指定index位置的元素
System.out.println(list.get(3));//中国
//int indexOf(Object obj):返回obj在集合中首次出现的位置
System.out.println(list.indexOf("tom"));//2
//int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
list.add("中国");
System.out.println("list="+list);
System.out.println(list.lastIndexOf("中国"));
//Object remove(int index):移除指定index位置的元素,并返回此元素
list.remove(0);
System.out.println("list="+list);
// Object set(int index, Object ele):设置指定index位置的元素为ele , 相当于是替换.
list.add(1,"玛丽");
System.out.println("list="+list);
// List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
// 注意返回的子集合 fromIndex <= subList < toIndex 即 [0,2)
List returnlist = list.subList(0, 2);
System.out.println("returnlist="+returnlist);
}
}
4.2 List练习 505
添加10个以上的元素(比如String "hello" ),在2号位插入一个元素"韩顺平教育",获得第5个元素,删除第6个元素,修改第7个元素,在使用迭代器遍历集合,要求:使用List的实现类ArrayList完成。
代码在com.stulzl.list_exercise01.包中
ListExercise01
package com.stulzl.list_exercise01;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//添加10个以上的元素(比如String "hello" ),在2号位插入一个元素"中国", 505
//获得第5个元素,删除第6个元素,修改第7个元素,在使用迭代器遍历集
//合,要求:使用List的实现类ArrayList完成。
public class ListExercise01 {
public static void main(String[] args) {
List list = new ArrayList();
for (int i = 0; i <= 12; i++) {
list.add("hello"+i);
}
System.out.println("list="+list);
list.add(1,"中国");//插入一个元素"中国"
System.out.println("list="+list);
System.out.println(list.get(5));//获得第5个元素
list.remove(5);//删除第6个元素
System.out.println("list="+list);
list.set(6,"世界");
System.out.println("list="+list);
//使用迭代器遍历
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("list="+obj);
}
}
}
5. List 的三种遍历方式
说明:使用LinkedList和Vector完成使用方式和ArrayList 一样
代码在com.stulzl.list_for.包中
ListFor
package com.stulzl.list_for;
import java.util.*;
//List 的三种遍历方式 506
public class ListFor {
@SuppressWarnings({"all"})
public static void main(String[] args) {
//List 接口的实现子类 Vector LinkedList ArrayList三者一样操作
//List list = new LinkedList();
//List list = new Vector();
List list = new ArrayList();
list.add("jack");
list.add("tom");
list.add("鱼香肉丝");
list.add("北京烤鸭子");
//遍历
//1. 迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("list="+obj);
}
//2. 增强for循环
System.out.println("==增强for==");
for (Object o :list) {
System.out.println("list="+o);
}
//普通for循环
System.out.println("====普通for循环====");
for (int i = 0; i <list.size();i++) {
System.out.println("对象="+list.get(i));
}
}
}
6. List练习 507
使用List的实现类添加三本图书,并遍历,打印如下效果
名称:xx 价格: xx 作者: xx
名称: xx 价格: xx 作者: xx
名称: xx 价格: xx 作者: xx
要求
1)按价格排序,从低到高(使用冒泡法)
2)要求使用ArrayList. LinkedList和Vector三种集合实现
代码在com.stulzl.list_exercise02.包中
ListExercise02
package com.stulzl.list_exercise02;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;
//使用List的实现类添加三本图书,并遍历,打印如下效果
//名称:xx价格: xx作者: xx
//名称: xx价格: xx作者: xx
//名称: xx价格: xx作者: xx
//要求
//1)按价格排序,从低到高(使用冒泡法)
//2)要求使用ArrayList. LinkedList和Vector三种集合实现
@SuppressWarnings({"all"})
public class ListExercise02 {
public static void main(String[] args) {
List list = new ArrayList();
// List list = new Vector();
// List list = new LinkedList();
list.add(new Book("红楼梦", "曹雪芹", 100));
list.add(new Book("西游记", "吴承恩", 10));
list.add(new Book("水浒传", "施耐庵", 19));
list.add(new Book("三国 ", "罗贯中", 80));
//遍历
for (Object o :list) {
System.out.println(o);
}
sort(list);
System.out.println("===排序后===");
for (Object o :list) {
System.out.println(o);
}
}
//静态方法
//价格要求是从小到大
public static void sort(List list){
int listsize = list.size();
//冒泡排序
for (int i =0;i<listsize-1;i++){
for(int j = 0;j<listsize-1-i;j++){
//取出对象Book,以备比较
Book book1 = (Book)list.get(j);
Book book2 = (Book)list.get(j+1);
if(book1.getPrice()>book2.getPrice()){//交换条件
list.set(j,book2);//把价格高的往前调
list.set(j+1,book1);
}
//两种写法
// if(((Book) list.get(j)).getPrice()>((Book) list.get(j+1)).getPrice()){
// list.set(j,list.get(j+1));//把价格高的往前调
// list.set(j+1,list.get(j));
// }
}
}
}
}
class Book{
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "名称:"+name+"\t\t价格:"+price+"\t\t作者:"+ author;
}
}