JavaSE——集合2:List(Iterator迭代器、增强for、普通for循环遍历集合)

目录

一、List

(一)List接口基本介绍

二、List接口的常用方法

三、List集合的三种遍历方式

四、小练习------使用冒泡排序遍历集合


一、List

(一)List接口基本介绍

List接口是Collection接口的子接口

java 复制代码
public interface List<E> extends Collection<E> 
  1. List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复

    java 复制代码
    List list = new ArrayList();
    list.add("jack");
    list.add("mary");
    list.add("tom");
    list.add("tom");
    System.out.println("list=" + list);
    // list=[jack, mary, tom, tom]
  2. List集合中的每个元素都有其对应的顺序索引,即支持索引。索引是从0开始的,可以根据索引存取集合中的元素。

    java 复制代码
    System.out.println(list.get(2)); // tom
  3. JDK API中List接口的实现类有:常用的是ArrayList、LinkedList和Vector

二、List接口的常用方法

java 复制代码
// 准备数据
List list = new ArrayList();
list.add("jack");
list.add("mary");
list.add("tom");
list.add("tom");

// void add(int index, Object ele):在index位置插入元素
list.add(1, "john");
System.out.println("list=" + list);
// list=[jack, john, mary, tom, tom]

// boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
List list2 = new ArrayList();
list2.add("张三");
list2.add("李四");
list.addAll(3, list2);
System.out.println("list=" + list);
// list=[jack, john, mary, 张三, 李四, tom, tom]


// get(int index):获取指定index位置的元素
System.out.println(list.get(5)); // tom


// int indexOf(Object obj):返回obj在集合中首次出现的位置
System.out.println(list.indexOf("tom")); // 5


// int lastindexOf(Object obj):返回obj在集合中末次出现的位置
System.out.println(list.lastIndexOf("tom")); // 6


// Object remove(int index):移除指定index位置的元素,并返回此元素
Object remove = list.remove(3);
System.out.println("移除的元素是:" + remove); // 张三


// Object set(int index, Object ele):设置指定index位置的元素为ele,相当于是替换
System.out.println("替换前:list=" + list);
// 替换前:list=[jack, john, mary, 李四, tom, tom]

Object ele = list.set(3, "王五");
System.out.println(ele + "替换后:list=" + list);
// 李四替换后:list=[jack, john, mary, 王五, tom, tom]


// List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
// 注意:包头不包尾[fromIndex, toIndex)
List subList = list.subList(1, 5);
System.out.println("subList=" + subList);
// subList=[john, mary, 王五, tom]

三、List集合的三种遍历方式

注意:ArrayList、LinkedList和Vector集合的遍历,都适用于下面的遍历方法。

java 复制代码
List list = new ArrayList();
// List list = new LinkedList();
// List list = new Vector();

for (int i = 0; i < 12; i++) {
    list.add("hello" + i);
}
// 方式一:迭代器遍历
Iterator iterator = list.iterator();
while (iterator.hasNext()){
    Object obj = iterator.next();
    System.out.println(obj);
}

// 方式二:增强for
for (Object obj : list) {
    System.out.println(obj);
}

// 方式三:普通for循环
for (int i = 0; i < list.size(); i++) {
    Object obj = list.get(i);
    System.out.println(obj);
}

四、小练习------使用冒泡排序遍历集合

创建Book类:

java 复制代码
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;
    }

    @Override
    public String toString() {
        return "名称:" + name + "\t\t价格:" + price + "\t\t作者:" + author;
    }

    public double getPrice() {
        return price;
    }
}

创建集合:

java 复制代码
public class ListExercise02 {
    public static void main(String[] args) {
        List list = new ArrayList();
        //  List list2 = new LinkedList();
        //  List list3 = 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));        
    }   
}

编写冒泡排序,从大到小排序:

java 复制代码
public static void sort(List list) {
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = 0; j < list.size() - 1 - i; j++) {
                // 强制类型转换
                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);
                }
            }
        }
    }

main方法中调用sort()方法:

java 复制代码
// 排序前
for (Object o : list) {
    System.out.println(o);
}
sort(list);

System.out.println("---------------排序后------------------");
// 排序后
for (Object o : list) {
    System.out.println(o);
}

运行结果:

相关推荐
yuanbenshidiaos18 分钟前
c++---------数据类型
java·jvm·c++
向宇it21 分钟前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro35 分钟前
【Spring】Spring框架之-AOP
java·mysql·spring
莫名其妙小饼干38 分钟前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
isolusion1 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp1 小时前
Spring-AOP
java·后端·spring·spring-aop
Oneforlove_twoforjob2 小时前
【Java基础面试题033】Java泛型的作用是什么?
java·开发语言
TodoCoder2 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
小蜗牛慢慢爬行2 小时前
Hibernate、JPA、Spring DATA JPA、Hibernate 代理和架构
java·架构·hibernate