Java:List中常见的方法和五种遍历方式

本文详细介绍了JavaList集合的特点,如有序、可重复以及特有的方法如add、remove、set和get。还探讨了List集合的遍历方式,包括迭代器、列表迭代器、增强for循环、lambda表达式和普通for循环的使用示例。
摘要由CSDN通过智能技术生成

1.List集合的特点:

有序:存和取的元素顺序一致

有索引:可以通过索引操作元素

可重复:存储的元素可以重复

2.List集合的特有方法

Collection的方法List都继承了

List集合因为有索引,所以多了很多索引操作的方法

方法:

void add(int index,E element)----------->在此集合中的指定插入指定的元素

E remove(int index)----------->删除指定索引处的元素,返回被删除的元素

E set(int index,E element)----------->修改指定索引处的元素,返回被修改的元素

E get(int index)----------->返回指定索引处的元素

代码运行:

package a04mylistdemo;

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

public class ListDemo1 {
    public static void main(String[] args) {
        //1.创建一个集合
        List<String> list=new ArrayList<>();
        //2.添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
//        System.out.println(list);//[aaa, bbb, ccc]
//        //在此集合的指定位置插入指定元素
//        //细节:原来索引上的元素会一次往后移
//        list.add(1,"qqq");//[aaa, qqq, bbb, ccc]
//        System.out.println(list);
//        //删除指定索引的元素,返回被删除的元素
//        String remove = list.remove(0);
//        System.out.println(remove);//aaa

        //set方法:返回被修改的元素
//        String result = list.set(0, "hhh");
//        System.out.println(result);//aaa
//        System.out.println(list);//[hhh, bbb, ccc]

        //get方法:
        String s = list.get(0);
        System.out.println(s);//aaa
    }
}

运行结果:

List删除元素的两种方法:
//1.直接删除元素
//2.通过索引进行删除

注意点:默认通过索引删除因为在调用方法时,如果方法出现了重载现象:优先调用实参跟形参类型一致的那个方法,如果想直接删除元素要手动装箱

代码演示:

package a04mylistdemo;

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

public class ListDemo2 {
    public static void main(String[] args) {
        //List系列集合中的两种删除的方法
        //1.直接删除元素
        //2.通过索引进行删除

        //1.创建集合并添加元素:
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //2.删除元素
        //list.remove(1);//[1, 3]
        //此时的1是删除1索引上的元素
        //因为在调用方法时,如果方法出现了重载现象:优先调用实参跟形参类型一致的那个方法

        //若要删除元素1:
        //需要手动装箱,手动把基本数据类型的1变成Integer类型
        Integer i=Integer.valueOf(1);
        list.remove(i);
        System.out.println(list);//[2, 3]
    }
}

运行结果:

 

3.List集合的遍历方式

(1)迭代器遍历

在遍历的过程中需要删除元素,使用迭代器

代码演示:

package a04mylistdemo;

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

public class ListDemo3 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }
    }
}

运行结果:

 

(2)列表迭代器遍历

在遍历的过程中需要添加元素,使用列表迭代器

代码演示:

package a04mylistdemo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;

public class ListDemo3 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");


        //列表迭代器:
        //获取一个列表迭代器的对象,里面的指针也是默认指向0索引
        //额外添加了一个方法:在遍历过程中可以添加元素
        ListIterator<String> it = list.listIterator();
        while(it.hasNext()){
            String str = it.next();
            if("bbb".equals(str)){
                it.add("qqq");
            }
           
        }
        System.out.println(list);
    }
}

运行结果:

 

(3)增强for循环遍历

仅仅想遍历,用增强for或lambda表达式

代码演示:

package a04mylistdemo;

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

public class ListDemo3 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");


        //增强for的遍历方式
        //s就是一个第三方变量
        //在循环过程中依次表示集合中的每一个元素
        for (String s : list) {
            System.out.println(s);
        }
    }
}

运行结果:

 

(4)Lambda表达式遍历

代码演示:

package a04mylistdemo;

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

public class ListDemo3 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");


        //lambda表达式
        //forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素
        //并把每一个元素传递给下面的accept方法
        //accept方法的形参s 依次表示集合中的每一个元素
//        list.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
        list.forEach( s -> System.out.println(s));
    }
}

运行结果:

 

(5)普通for循环(因为List集合存在索引)

如果在遍历时想操作索引,可以用普通for

代码演示:

package a04mylistdemo;

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

public class ListDemo3 {
    public static void main(String[] args) {
        //1.创建集合并添加元素
        List<String> list=new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

       //普通for
        for (int i = 0; i < list.size(); i++) {
            //i就是集合中的每一个索引
            String s = list.get(i);
            System.out.println(s);
        }
    }
}

运行结果:

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`this.refs`返回的是一个对象,其属性名为`ref`值,属性值为对应的组件实例。如果你想要遍历多个组件实例并执行相同的方法,可以将多个组件实例保存在一个数组,然后遍历该数组执行方法。 例如,可以在父组件定义一个数组`listRefs`,在每个子组件的`componentDidMount`方法将自身的实例添加到该数组,然后在父组件执行遍历该数组并执行方法的操作。 代码示例如下: ```jsx class ParentComponent extends React.Component { constructor(props) { super(props); this.listRefs = []; // 定义保存子组件实例的数组 } // 在每个子组件的componentDidMount方法将实例添加到数组 addChildRef = (ref) => { this.listRefs.push(ref); } // 执行遍历数组并执行方法的操作 handleClick = () => { this.listRefs.forEach((ref) => { ref.someMethod(); // 执行子组件的方法 }); } render() { return ( <div> <ChildComponent ref={this.addChildRef} /> <ChildComponent ref={this.addChildRef} /> <button onClick={this.handleClick}>执行方法</button> </div> ); } } class ChildComponent extends React.Component { componentDidMount() { // 将自身的实例添加到父组件的数组 this.props.ref(this); } someMethod() { console.log('执行了子组件的方法'); } render() { return ( <div>子组件</div> ); } } ``` 在上面的代码,父组件定义了一个数组`listRefs`,并在每个子组件的`componentDidMount`方法将自身的实例添加到该数组。在父组件的`handleClick`方法遍历该数组并执行子组件的`someMethod`方法。 需要注意的是,在子组件,`ref`属性不能直接使用字符串,需要将其传递给一个回调函数,该函数会在子组件的`componentDidMount`方法被调用,并将子组件的实例作为参数传递给该函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值