List

1. List概述

  • List代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引
  • List允许使用重复元素,可以通过索引来访问指定位置的集合元素
  • List默认按元素的添加顺序设置元素的索引
  • List集合里添加了一些根据索引来操作集合元素的方法
    • void add(int index, Object ele)
    • boolean addAll(int index, Collection eles)
    • Object get(int index)
    • int indexOf(Object obj)
    • int lastIndexOf(Object obj)
    • Object remove(int index)
    • Object set(int index, Object ele)
    • List subList(int fromIndex, int toIndex)

2. 示例代码

package test.com.atguigu.javase.lesson7; 

import com.atguigu.javase.lesson7.Person1;
import org.junit.Test;

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

/** 
* ListTest Tester.
*/ 
public class ListTestTest {
    @Test
    public void testArrayList(){
        List list = new ArrayList();

        //void add(int index, Object ele):把元素添加到指定位置,原来的元素被后移
        list.add(new Person1("AA",12));
        list.add(new Person1("BB",11));
        list.add(new Person1("CC",10));
        list.add(new Person1("DD",9));
        list.add(new Person1("EE",8));

        //Object get(int index):获取指定索引的元素
        for(int i = 0; i < list.size(); i++){
            Object object = list.get(i);
            System.out.println(object);
        }

        //int indexOf(Object obj):获取指定元素的索引值
        int index = list.indexOf(new Person1("CC",10));
        System.out.println(index);

        //Object remove(int index):移除指定索引的元素
        Object removeObj = list.remove(0);
        System.out.println(removeObj);

        //boolean addAll(int index, Collection collection):把一组元素添加到指定位置
        List list2 = new ArrayList();
        list2.add(new Person1("FF",7));
        list2.add(new Person1("CC",10));
        list.addAll(list2);

        //int lastIndexOf(Object obj):List中可以存放重复的元素,获取最后索引值
        System.out.println(list.lastIndexOf(new Person1("CC",10)));

        //Object remove(int index):移除指定索引的元素
        System.out.println(0);

        //Object set(int index, Object ele):设置指定位置的元素
        list.set(0,new Person1("GG",7));

        //List subList(int fromIndex, int toIndex):获取起止位置的元素集合
        //包含fromIndex, 不包含toIndex
        List list3 = list.subList(2,6);
        System.out.println("list---------");
        Iterator iterator1 = list.iterator();
        while (iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
        System.out.println("list3---------");
        Iterator iterator2 = list3.iterator();
        while (iterator2.hasNext()){
            System.out.println(iterator2.next());
        }
    }
} 

3. ListIterator

List额外提供了一种listIterator()方法,可以双向遍历,既可以从前往后,也可以从后往前,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法:
- boolean hasPrevious()
- Object previous()
- void add()

4. ArrayList和Vector

  • ArrayList和Vector是List接口的两个典型实现
  • 区别:
    • Vector是一个古老的集合,通常建议使用ArrayList
    • ArrayList是线程不安全的,而Vector是线程安全的
    • 即使为保证List集合线程安全,也不推荐使用Vector
  • Arrays.asList(Object … args)方法返回的List集合,既不是ArrayList实例,也不是Vector实例。Arrays.asList(…)返回值是一个固定长度的List集合,只读。是Arrays里面的一个私有的静态内部类ArrayList。

5. 可变参数

  1. 从JDK1.5开始,Java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参
  2. 若在定义方法时,在最后一个形参的类型后增加三点(…,…位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值,多个参数值被当做数组传入
  3. 可变形参只能处于形参列表的最后,所以一个方法最多只能有一个长度可变的形参
  4. 调用包含一个可变形参的方法时,可以为该形参传入多个参数或一个数组
  5. 能匹配定长的方法,那优先匹配该方法。含有不定参数的重载方法被最后匹配
  6. main方法的参数就是一个数组类型,他可以改成可变参数类型
  7. 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问
    参考资料:https://www.cnblogs.com/lanxuezaipiao/p/3190673.html

5. 可变参数示例代码

public class ArrayListTestTest { 

    public void test1(String ... args){
        for(int i = 0; i < args.length; i++){
            System.out.print(args[i]+"  ");
        }
    }

    public void test1(String s1, String s2){
        System.out.println("定长");
    }

    @Test
    public void arrays(){
        //匹配可变参数重载方法
        test1(new String[]{"MM","NN"});//MM NN
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值