Java-集合(List接口及其常用的实现子类)

本文详细介绍了Java List接口的基础概念,包括元素有序性、索引访问、常用方法如添加、设置和排序,以及列举了常见实现类。通过实例演示了如何使用ArrayList、LinkedList等进行操作,并展示了排序和遍历的不同方式。
摘要由CSDN通过智能技术生成

List接口基本介绍

1)List集合类中元素是有序的(即添加顺序和取出顺序一致),且可以重复;

2)List集合类中的每个元素都有其对应的顺序索引,即支持索引;

3)List容器中的元素对应一个整数型的序号,记载其在容器中的索引位置,可以根据序号存取容器中的元素;

4)List接口实现类有:AbstractList类、AbstractSequentialList类、ArrayList类、AttributeList类、CopyOnWriteArrayList类、LinkedList类、RoleList类、Stack类、RoleUnresolvedList类、Vector类。

package com.pero.list_;

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

/**
 * @author Pero
 * @version 1.0
 */
public class List_ {
    public static void main(String[] args) {

        List list = new ArrayList();

        //1.List集合类中的元素有序(添加和取出顺序一致)、且可以重复;
        list.add("tom");
        list.add("jake");
        list.add("marry");
        list.add("smith");
        System.out.println(list);

        //2.List集合中的每个元素都有其对应的顺序索引,支持索引
        System.out.println(list.get(1));

        //3.List集合都对应一个整数型的序号,记载其在容器中的位置,可以根据序号存取容器中的元素
        list.set(3,"lucy");
        System.out.println(list.get(3));

        //4.List接口的实现类有:AbstractList类、AbstractSequentialList类、ArrayList类、
        //  AttributeList类、CopyOnWriteArrayList类、LinkedList类、RoleList类、Stack类、
        //  RoleUnresolvedList类、Vector类
    }
}

List接口的常用方法

package com.pero.list_;

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

/**
 * @author Pero
 * @version 1.0
 */
public class ListMethod {
    public static void main(String[] args) {

        List list = new ArrayList();
        list.add("jake");
        list.add("lucy");

        //void add(int index, Object object)方法:在index位置,插入object元素
        list.add(1,"smith");
        System.out.println(list);

        //boolean addAll(int index, Collection collection)方法,从index位置,
        // 开始将collection中的所有元素添加进来
        List list2 = new ArrayList();
        list2.add("pero");
        list2.add("tom");
        list.addAll(2,list2);
        System.out.println(list);

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

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

        //int lastIndexOf(Object object):返回object元素在当前集合中末次出现的位置索引
        list.add("jake");
        System.out.println(list.lastIndexOf("jake"));

        //Object remove(int Index):移除指定index索引位置的元素,并返回该元素
        System.out.println(list.remove(0));
        System.out.println(list);

        //Object set(int index, Object object):设置指定index索引位置的元素为object,相当于替换
        list.set(1,"jake");
        System.out.println(list);

        //List subList(int formIndex, int toIndex):
        // 返回从formIndex到toIndex索引位置的子集合
        //[0,3)  0 <= 返回的子集合索引 < 3
        System.out.println(list.subList(1,3));

    }
}

 List接口练习

package com.pero.list_;

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

/**
 * @author Pero
 * @version 1.0
 */
public class ListExercise {
    public static void main(String[] args) {

        List list = new ArrayList();
        for (int i = 1; i < 13; i++) {
            list.add("hello"+i);
        }

        //在第二个元素位置插入pero
        list.add(1,"pero");

        //获取第五个元素
        System.out.println(list.get(4));

        //删除第六个元素
        System.out.println(list.remove(5));
        System.out.println(list);

        //修改第七个元素
        list.set(6,"三国演义");

        //使用迭代器遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object object =  iterator.next();
            System.out.println(object);
        }


    }
}

List三种遍历方式

package com.pero.list_;

import java.util.*;

/**
 * @author Pero
 * @version 1.0
 */
public class ListFor {
    public static void main(String[] args) {

        List list = new ArrayList();
        //List list = new Vector();
        //List list = new LinkedList();
        
        list.add("jake");
        list.add("鱼香肉丝");
        list.add("tom");
        list.add("北京烤鸭");

        System.out.println(list);

        //迭代器遍历
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object object =  iterator.next();
            System.out.println(object);
        }

        //增强for(快捷键大写的I)
        for (Object o :list) {
            System.out.println(o);
        }

        //普通for()
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }


    }
}

List排序练习

package com.pero.list_;

import java.util.*;

/**
 * @author Pero
 * @version 1.0
 */
public class ListEx {
    public static void main(String[] args) {

        //List接口的其他实现子类一样可以
        //List list = new ArrayList();
        //List list = new Vector();
        List list = new LinkedList();

        list.add(new Book("红楼梦",100,"曹雪芹"));
        list.add(new Book("西游记",80,"吴承恩"));
        list.add(new Book("三国",60,"罗贯中"));
        list.add(new Book("水浒传",130,"施耐庵"));
        list.add(new Book("西游记",60,"吴承恩"));

        //调用sort()方法进行排序
        sort(list);

        //使用迭代器遍历
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            Object object = iterator.next();
            System.out.println(object);
        }

        //使用增强for进行遍历
        for (Object o :list) {
            System.out.println(o);
        }

        //使用普通for进行遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }

    //排序方法
    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);
                }
            }
        }
    }
}
class Book{
    private String name;
    private double price;
    private String author;

    public Book(String name, double price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值