List中的常用方法

. List接口中存储数据的特点:用于存储有序的、可以重复的数据。---> 使用List替代数组,"动态"数组


2. List中的常用方法:

第1波:Collection中声明的15个方法。


第2波:因为List是有序的,进而就有索引,进而就会增加一些针对索引操作的方法。
- 插入元素
  - `void add(int index, Object ele)`:在index位置插入ele元素
  - boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
- 获取元素
  - `Object get(int index)`:获取指定index位置的元素
  - List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
- 获取元素索引
  - int indexOf(Object obj):返回obj在集合中首次出现的位置
  - int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
- 删除和替换元素
  - `Object remove(int index)`:移除指定index位置的元素,并返回此元素
  - `Object set(int index, Object ele)`:设置指定index位置的元素为ele

小结:
    增
        add(Object obj)
        addAll(Collection coll)
    删
        remove(Object obj)
        remove(int index)
    改
        set(int index, Object ele)
    查
        get(int index)
    插
        add(int index, Object ele)
        addAll(int index, Collection eles)
    长度
        size()
    遍历
        iterator() :使用迭代器进行遍历
        增强for循环
        一般的for循环
/**
 * ClassName: ListTest
 * Package: com.atguigu03.list
 * Description:
 *
 *  增
 *         add(Object obj)
 *         addAll(Collection coll)
 *     删
 *         remove(Object obj)
 *         remove(int index)
 *     改
 *         set(int index, Object ele)
 *     查
 *         get(int index)
 *     插
 *         add(int index, Object ele)
 *         addAll(int index, Collection eles)
 *     长度
 *         size()
 *     遍历
 *         iterator() :使用迭代器进行遍历
 *         增强for循环
 *         一般的for循环
 *
 * @Author 小白
 * @Create 2024/4/10 23:16
 * @Version 1.0
 */
public class ListTest {
    
    @Test
    public void test1(){
   //接口不能创造对象 只能是实现类去创造对象   List:接口  ArrayList: List的实现类
        List list = new ArrayList();

        /* *  增
         *         add(Object obj)
         *         addAll(Collection coll)*/
        list.add("AA");
        list.add(123);
        list.add("BB");
        list.add(new Person("Tom",12));

        //这里面的底层用的也是迭代器进行遍历  toString方法在AbstractCollection类中
        // 可用Ctrl+H查看继承树   Ctrl+F12  在AbstractCollection类找toString方法
        //Ctrl+N可以去找类
       //System.out.println(list.toString());//[AA, 123, BB, Person{name='Tom', age=12}]



        /*  插
         *         add(int index, Object ele)
         *         addAll(int index, Collection eles)*/
        //在集合list中索引为1的位置插入CC
        list.add(1,"CC");
      //  System.out.println(list); //[AA, CC, 123, BB, Person{name='Tom', age=12}]



        //将数组通过 Arrays.asList转成集合
        List list1 = Arrays.asList(1, 2, 3);
        //
       // list.add(1,list1);//将list1整体作为一个元素,插入到索引为1的位置
       //[AA, [1, 2, 3], CC, 123, BB, Person{name='Tom', age=12}]
       // System.out.println(list);

    //list.addAll和list.add测试时 不能同时学 不能测试list.addAll的时候
        // 因为已经有了list.add添加后结果
           //将集合list1的元素1, 2, 3 ;加到list索引为1的位置  其他元素往后移动
        list.addAll(1,list1);
        //[AA, 1, 2, 3, CC, 123, BB, Person{name='Tom', age=12}]
        System.out.println(list);

    }


   @Test
   public void test2(){
        List list = new ArrayList();
       list.add("AA");
       list.add("BB");
       list.add(123);
       list.add(2);//自动装箱  将基本类型自动转换成引用类型
       list.add(new Person("Tom",12));

        //把索引为2的元素删除
       list.remove(2);
       System.out.println(list); //[AA, BB, 2, Person{name='Tom', age=12}]
       //得到索引为2的元素
       System.out.println(list.get(2)); //2


       //如何删除数据2
       //把基本类型转换成包装类 把基本类型2包装成一个对象 就可以删除基本类型的数据2
       //  (装箱)基本数据类型 ---> (建议)调用包装类的valueOf(xxx xx)
       //包装类的类型.valueOf(xxx xx)   比如int的包装类是Integer
       // 那就用Integer.valueOf(xxx xx)  就可以将基本类型int转换成包装类(装箱)
    list.remove(Integer.valueOf(2));
       System.out.println(list); //[AA, BB, Person{name='Tom', age=12}]
   }
   
   @Test
   public void test3(){
       List list = new ArrayList();
       list.add("AA");
       list.add("BB");
       list.add(123);
       list.add(2);//自动装箱  将基本类型自动转换成引用类型
       list.add(new Person("Tom",12));

    //遍历方式1:使用迭代器
       //创建迭代器对象
       Iterator iterator = list.iterator();
      //next():①指针下移 ② 将下移以后集合位置上的元素返回
       /*  1. `hasNext()`: 用于检查迭代器是否还有下一个元素。
          2. `next()`: 用于获取迭代器的下一个元素。
          3. `remove()`: 用于从集合中移除迭代器最后访问过的元素。*/

       while (iterator.hasNext()){
           System.out.println(iterator.next());
       }


       //遍历方式2:培强for循环
        for (Object obj : list){
            System.out.println(obj);
        }

         //遍历方式3:一般的for循环
       //size():长度
       for (int i = 0; i <list.size() ; i++) {
           System.out.println(list.get(i));
       }


   }
   
 
    
}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值