Java~List接口详解

目录

List接口

List接口中的特殊方法 

对象相等判定使用的是equals方法


List接口

有序 允许重复public interface List<E> extends Collection<E>
继承自Collection接口的方法
boolean add(E e);向集合末尾追加元素e对象  
boolean remove(Object obj)删除一个和obj相等的元素,
如果没有和obj相等元素,则报异常indexoutofboundsexception 


List接口中的特殊方法
 

void add(int index, E element); 向指定索引位置index上添加元素element,
原始数据自动后移

E get(int index);  获取指定索引号对应的元素,index应该在[0,size-1]

E set(int index, E element);  用于给指定索引位置上进行赋值,这个位
置上必须有对应的数据(已经赋过值),这里实际上是修改操作,否则
indexoutofboundsexception

E remove(int index);删除指定位置的元素,可以返回原始位置上存储的元素
int indexOf(Object o); 查找从左向右第一个o元素的下标索引,如果元素
不存在返回-1
 
int lastIndexOf(Object o);从右向左查找


对象相等判定使用的是equals方法

sort方法按照自定义比较器对集合中的所有元素进行排序,认自然序
 default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();  //将List集合对象转换为数组
        Arrays.sort(a, (Comparator) c);  //调用Arrays工具类中的排序方法对数组进行排序
        ListIterator<E> i = this.listIterator();  //获取List集合对象中特殊的Iterator迭代器对象
        for (Object e : a) {  //foreach结构遍历数组中的所有元素
            i.next();
            i.set((E) e); //修改集合List中迭代器指定的当前位置上的元素
        }
    }

  list.sort(new Comparator<A2>() {
            public int compare(A2 o1, A2 o2) {
                // 自定义比较规则,按照id从小到大,如果id相等则按照name从大到小
                int res = o1.getId().compareto(o2.getId());
               if (res == 0)
                    res = (o1.getName().compareto(o2.getName())) * -1;
                return res;
            }
        });

调用方法时要求传入参数为自定义比较器对应的实现类ArrayList底层实现为数组,线程不安全Vector底层实现为数组,线程安全  synchronized,LinkedList底层实现为链表,线程不安全
 

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...