List接口

1.1List接口概述

List接口特征:

1.数据存储可重复

2有序,添加顺序和保存顺序一致

----| ArrayList<E>

可变长数组

-----| LinkedList<E>

双向链表

---------| Vector

线程安全的可变长数组

1.2List常用方法

boolean add(E  e);

List接口继承Collection接口 add方法,使用操作和Collection一致,并且这里采用的添加方式是【尾插法】

boolean add(int index ,E  e);

List接口【特有方法】,在指定位置,添加指定元素

boolean addAll(Collection<? extends E > c);

List接口继承Collection接口 addAll方法,使用操作和Collection一致,并且这里采用的添加方式是【尾插法】

boolean addAll( int index ,Collection<? extends E > c);

List 接口【特有方法】,指定下标位置,添加另一个集合中所有内容

E remove(int index);

List接口【特有·方法】,获取指定下标位置的元素

boolean remove (Object obj);

List 接口继承Collection接口方法,删除集合中的指定元素

boolean removeAll(Collection<?> c);

List接口继承Collection接口方法。删除当前集合中和参数集合重复元素

clear();

List 接口继承Collection几口方法。清空整个集合中的所有元素

E set(int index,E e);

List接口【特有方法】,使用指定元素替代指定下标的元素,返回值是被替换的元素

int size ();

List 接口继承Collection接口方法。获取集合中有效元素个数

boolean isEmpty();

List接口继承Collection接口方法判断当前集合是否为空

boolean contains(Object obj);

List接口继承Collection接口方法,判断指定元素是否包含在当前集合中

boolean containsAll(Collection<?> c);

List接口继承Collection接口方法,判断参数集合是不是在当前集合的子集合

Object[] toArray();

List接口继承Collection接口方法。获取当前集合中所有元素Object数组

E get (int index);

List接口【特有方法】。获取指定下标对应的元素

List<E> subList(intfromIndex,int toIndex);

List接口【特有方法】。获取当前集合指定子集合,从fromIndex开始到toIndex结束,

fromIndex <= 范围 < toIndex

int indexOf(Object obj);

List接口【特有方法】。获取指定元素在集合中低依次出现的位置

int lastIndexOf(Object obj);

List接口【特有方法】。获取指定元素在集合中最后一次出现的位置

2.3List接口常用方法演示


package com.qfen.rxs;

import java.util.ArrayList;

import java.util.List;

public class Demo4 {

private void main() {

// TODO Auto-generated method stub

List<String> list = new ArrayList<String>();

list.add("wqe1");

list.add("121424");

list.add("wweqeq1");

list.add("1dad24");

System.out.println(list);

list.add(3, "1edqrdwf");

System.out.println(list);

List<String> list2 = new ArrayList<String>();

list2.add("1111");

list2.add("1211");

list2.add("1311");

list2.add("1411");

list.addAll(4,list);

System.out.println(list);

String remove = list.remove(1);

System.out.println(remove);

System.out.println(list);

list.removeIf((str) -> str.length() > 4);

System.out.println(list);

}

}

3ArrayList【重点】

3.1ArrayList概述

ArrayList是在java中集合非常重要的一个组装,基于数组完成的数据结构。课变长数组操作!!!

底层保存数据的是一个Object类型数组

ArrayList使用的方法都是List接口中的方法,有两需要了解的成员方法

ensureCapacity();

判断方法用于确定当前底层数组的容量是否满足当前操作需求

trimToSize();

节省空间将底层数组的容量缩容致有效元素个数’

3.2细节问题


1. DEFAULT_CAPACITY 默认容量 private static final int DEFAULT_CAPACITY = 10;

在调用ArrayList无参数构造方法是,才会使用 DEFAULT_CAPACITY,作为底层Object数组的初始化容量。如果用 户指定调用的是带有初始化底层Object数组容量的构造方法,会根 据用户指定的容量创建对一个ArrayList集合。

2为什么 - 8??? 因为在数组中存在很多属性,length只是众多属性中的一 个,在创建数组使用的过程中,需要留有内存空间用于保存数组中属性。

3.3效率问题

ArrayList特征:

 增删慢 

 增加慢 

 1. 数组当前容量无法满足添加操作,需要进行grow 扩容方法执行,在扩容方 法中,存在数组创建,数组数据拷贝。非常浪费时 间,而且浪费内存。 

 2. 数组在添加数据的过程中,存在在指定位置添加 元素,从指定位置开始, 之后的元素整体向后移动。 

删除慢

 1. 删除数据之后,从删除位置开始,之后的元素整 体向前移动,移动过程非 常浪费时间 

 2. 删除操作会导致数据空间的浪费,内存的浪费 

 查询快

ArrayList底层是一个数组结构,在查询操作的过程中, 是按照数组+下标的方式 来操作对应的元素,数组+下标方式可以直接获取对应的空 间首地址,CPU访问效率 极高

3.4【补充知识点,内存地址】

内存地址概念: [计算机原理] 计算机中为了更好的使用内存,操作程序,完成代码。将内存按 照小单位,进行编号处理。 小单位: 字节 byte 从编号为0内存开始,到内存的大值。地址的展示方式是十六 进制。

3.5【补充 内存地址对于cpu有什么关系】


快递小哥我们可以看做是CPU,快递上地址,就是内存地址,具 有唯一性!!!

代码实际运行:    CPU就是根据内存地址,可以直达内存所在区域,执行对应代 码。精准而优雅,速度非常快!!

3.6【补充 数组空间地址关系】


3.7【补充 null是什么】


null 是计算机中非常特殊的一块内存。该内存编号 0x0000 0000

该内存受到系统保护   

 不只是电脑,包括手机,iPad,智能设备,只要存在计算机基 本结构的设备上都存在null 编号为0x0内存。大小一个字节    该内存不能读取任何数据,也不能写入任何数据一旦操作,程 序直接被系统杀死   Kill -9       

 一般用于引用数据类型的初始化,利用开发中关于null的异 常,辅助找出代码中的错误。    NullPointerException

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352