1.List定义

List是一种有序链表:

  • List内部按照元素的先后顺序存放
  • 每个元素都可以通过索引确定自己的位置
  • 类似数组,但大小可变
//List<E>是一种有序链表:
//* List的元素可以重复
//* List的元素可以是null
import java.util.ArrayList;
import java.util.List; public class Main {
public static void main(String[] args){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(2);
list.add(null);
list.add(3);
System.out.println(list.size());
System.out.println(list.toString());
}
}


## 2.List常用方法:
* void add(E e) 在末尾添加一个元素
* void add(int index, E e) 在指定索引添加一个元素
* int remove(int index) 删除指定索引的元素
* int remove(Object e) 删除某个元素
* E get(int index) 获取指定索引的元素
* int size() 获取链表大小(包含元素的个数)

3.List特点

List是一种有序链表:

数组也是有序结构,但是大小固定,且删除元素时需要移动后续元素;因此使用数组添加和删除元素非常不方便。ArrayList是在内部使用数组存储所有元素的的链表。

https://blog.csdn.net/tangyaya8/article/details/76595488/

List有ArrayList和LinkedList两种实现

ArrayList LinkedList
获取指定元素 速度很快 需要从头开始查找元素
添加元素到末尾 速度很快(如果当前List已满,需要重新复制一个新数组) 速度很快
在指定位置添加、删除 需要移动元素 不需要移动元素
内存占用 较大

通常情况下,优先使用ArrayList

4.遍历List使用Iterator或者foreach循环

4.1方法一:使用for循环

for循环对于ArrayList效率比较高,对于LinkedList效率比较低

import java.util.ArrayList;
import java.util.List; public class Main {
public static void main(String[] args){
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("world");
list.add("java");
list.add(null);
list.add("python");
for(int i=0;i<list.size();i++){
String s = list.get(i);
System.out.println(s);
}
}
}


### 4.2方法二:使用iterator
```#java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Main {

public static void main(String[] args){

List list = new ArrayList<>();

list.add("Hello");

list.add("world");

list.add("java");

list.add(null);

list.add("python");

for(Iterator it = list.iterator();it.hasNext()

廖雪峰Java5集合-2List-1使用List的更多相关文章

  1. 廖雪峰Java5集合-3Map-1使用Map

    廖雪峰的视频不全,以下是疯狂Java关于Map的讲解 1.Map定义 Map是一种键值映射表,可以通过key快速查找value,同python的dict.key不允许重复,value可以重复. Map ...

  2. 廖雪峰Java5集合-4Set-1使用Set

    集合 Set用于存储不重复的元素集合: boolean add(E e) boolean remove(Object o) boolean contains(Object o) int size() ...

  3. 廖雪峰Java5集合-1Java集合简介-1Java结合简介

    1.集合 定义:集合就是一堆东西.集合里的东西,称为元素Element 数学中的集合: 有限集合: * 一个班所有的学生组成的集合 * 一个网站所有的商品组成的集合 无限集合: * 全体自然数集合 * ...

  4. 廖雪峰Java5集合-6Stack-1使用Stack

    1.栈的定义 栈Stack是一种后进先出(LIFO: Last In First Out)的数据结构,可以看作一端封闭的容器,先进去的元素永远在底部,最后出来. 栈有2个重要的方法: push(E e ...

  5. 廖雪峰Java5集合-3Map-Properties的使用

    Properties用于读取配置 properties文件只能使用ASCII码 #表示注释 可以从文件系统读取.properties文件 Properties props = new Properti ...

  6. 廖雪峰Java5集合-2List-2编写equals方法

    List是一种有序链表: List内部按照放入元素的先后顺序存放 每个元素都可以通过索引确定自己的位置 boolean contains(Object o) 是否包含某个元素 int indexOf( ...

  7. 廖雪峰Java5Java集合-5Queue-1使用Queue

    Queue特性和基本方法 Queue实现一个先进先出(FIFO, First In First Out)的队列.如收银台排队支付. Java中LinkedList实现了Queue接口,可以直接把Lin ...

  8. 爬取廖雪峰的python3教程

    从廖雪峰老师的python教程入门的,最近在看python爬虫,入手了一下 代码比较low,没有用到多线程和ip代理池 然后呢,由于robots.txt的限定,构建了一些user-agent,并放慢的 ...

  9. 廖雪峰Java6 IO编程-2input和output-4Filter模式

    1.JDK提供的InputStream分为两类: 直接提供数据的InputStream * FileInputStream:从文件读取 * ServletInputStream:从HTTP请求读取数据 ...

随机推荐

  1. SSAS aggregation 的作用及其使用

    作用: 聚合是为了解决查询在运行时的效率低下,在数据立方体部署的时候进行聚合,实际上是对数据立方体的预处理,方便以后查询.如若在部署时未进行聚合,则在以后每次查询时实际上都会进行一次集合的操作,等待结 ...

  2. UE4开发安卓遇到的坑

    做个记录,方便以后自己查询. 1.  打包后,应用出现缺乏google key的问题. 理论上,这个网站可以解决:https://wiki.unrealengine.com/How_To_Sign_U ...

  3. 识别假tf卡工具

    h2testwhttps://www.heise.de/download/product/h2testw-50539使用HaraldBögeholz的免费测试工具H2testw,可以检查存储介质(如硬 ...

  4. cenos7.0 安装docker

    使用yum命令在线安装  yum install docker 安装后查看Docker版本 docker -v启动docker:systemctl start docker停止docker:syste ...

  5. C++学习(十二)(C语言部分)之 循环

    上期回顾:分支if else switch 三目运算符 格式:if(条件){语句1:}else{语句2:} switch (变量){default:break;case 常量1:语句1 ;break; ...

  6. hdu3338 Kakuro Extension 最大流

    If you solved problem like this, forget it.Because you need to use a completely different algorithm ...

  7. android设备兼容性

    原文地址:http://developer.android.com/guide/practices/compatibility.html android被设计成能够在多种不同的设备上执行的系统,为了达 ...

  8. 【网络协议】TCP分段与IP分片

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/30109789     我们在学习TCP/IP ...

  9. windows下安装python-Levenshtein

    安装python-Levenshtein 报错 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Vi ...

  10. py-day2-2 python 元祖

    #元祖 tuple v = 'abddbwdhi' b = tuple(v) print(b) ('a', 'b', 'd', 'd', 'b', 'w', 'd', 'h', 'i') # 元素不可 ...