4.1 List 接口基本介绍
List.java
package com.xjz.list_;
import java.util.ArrayList;
import java.util.List;
public class List_ {
@SuppressWarnings({"all"})
public static void main(String[] args) {
//1. List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复【案例】
List list = new ArrayList();
list.add("jack");
list.add("tom");
list.add("mary");
list.add("xjz");
list.add("tom");
System.out.println("list=" + list);
//2. List集合中的每个元素都有其对应是顺序索引,即支持索引
// get(): 返回此列表中指定位置的元素; 索引是从 0 开始的!
System.out.println(list.get(3));//xjz
//3.
}
}
4.2 List 接口的常用方法
ListMethod.java
package com.xjz.list_;
import java.util.ArrayList;
import java.util.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("秋刀鱼")); //5
// Object remove(int index):移除指定 index 位置的元素,并返回此元素
list.remove(0);
System.out.println("list=" + list);
// Object set(int index, Object ele):设置指定 index 位置的元素为 ele,相当于是替换
list.set(1,"玛丽");
System.out.println("list=" + list);
// List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合
// 注意返回的子集合, 包头不包尾!
List returnList = list.subList(0,2); // [0,2)
System.out.println("returnList=" + returnList); // [java,玛丽]
}
}
4.3 List 接口课堂练习
ListExercise.java
package com.xjz.list_;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListExercise {
@SuppressWarnings({"all"})
public static void main(String[] args) {
/*
添加 10 个以上的元素(比如 String "hello" ),在 2 号位插入一个元素"秋刀鱼",
获得第 5 个元素,删除第 6 个元素,修改第 7 个元素,在使用迭代器遍历集合,
要求:使用 List 的实现类 ArrayList 完成。
*/
List list = new ArrayList();
for (int i = 0; i < 12; i++) {
list.add("hello" + i);
}
System.out.println("list=" + list);
//在 2 号位插入一个元素"秋刀鱼"
list.add(1,"秋刀鱼");
System.out.println("list=" + list);
//获得第 5 个元素
System.out.println(list.get(4));
//删除第 6 个元素
list.remove(5);
System.out.println("list=" + list);
//修改第 7 个元素
list.set(6,"三国演义");
System.out.println("list=" + list);
//在使用迭代器遍历集合
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
}
}
4.4 List 的三种遍历方法 [ ArrayList,LinkedList,Vector ]
ListFor.java
package com.xjz.list_;
import java.util.*;
public class ListFor {
@SuppressWarnings({"all"})
public static void main(String[] args) {
//List list = new ArrayList();
//List list = new LinkedList();
List list = new Vector();
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("obj=" + obj);
}
System.out.println("=====增强for=====");
//2. 增强for
for (Object o : list) {
System.out.println("o=" + o);
}
System.out.println("=====普通for=====");
//3. 使用普通for
for (int i = 0; i < list.size(); i++) {
System.out.println("对象=" + list.get(i));
}
}
}
4.5 实现类的课堂练习2
ListExercise02.java
package com.xjz.list_;
import java.util.*;
@SuppressWarnings({"all"})
public class ListExercise02 {
public static void main(String[] args) {
//List list = new ArrayList();
List list = new LinkedList();
//List list = new Vector();
list.add(new Book("红楼梦","曹雪芹",100));
list.add(new Book("西游记","吴承恩",10));
list.add(new Book("水浒传","施耐庵",9));
list.add(new Book("三国","罗贯中",80));
//list.add(new Book("西游记","吴承恩",10));
//遍历
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);
}
}
}
}
}