摘要:

本文主要介绍ArrayList(Vector)和LinkedList的常用方法, 也就是动态数组和链表。

ArrayList

ArrayList 类可以实现可增长的对象数组。

构造方法

ArrayList();//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。

ArrayList(int initialCapacity);//使用指定的初始容量和容量增量构造一个空的向量。

增加元素

add(E e);//将指定元素添加到末尾

add(int index, E element)//在此向量的指定位置插入指定的元素

删除元素

remove(int index);//移除此向量中指定位置的元素

clear();//从此向量中移除所有元素。

修改元素

set(int index, E element);//用指定的元素替换此向量中指定位置处的元素

查找元素

get(int index)//返回向量中指定位置的元素

indexOf(Object o)//返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回 -1。

lastIndexOf(Object o)返回此向量中最后一次出现的指定元素的索引;如果此向量不包含该元素,则返回 -1。

容器大小

size();//返回此向量中的组件数。

判空

isEmpty();//测试此向量是否不包含组件

转化为数组

toArray();//返回一个数组,包含此向量中以恰当顺序存放的所有元素。

转化为字符串

toString();//返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。

实例

ArrayList<Integer> V = new ArrayList<>();
V.add(1);
V.add(1);
V.set(0, 0);
System.out.print(V.toString()); 输出:
[0, 1]

LinkedList

LinkedList是List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列

  1. add(E e)//在末尾添加一个元素
  2. addFirst(E e)//在开头添加一个元素
  3. addLast(E e)//在末尾添加一个元素
  4. offer(E e)//将指定元素添加到此列表的末尾(最后一个元素)
  5. clear()//从此列表中移除所有元素
  6. element()获取但不移除此列表的头(第一个元素)。
  7. peek()//获取但不移除此列表的头(第一个元素)。
  8. poll()//获取并移除此列表的头(第一个元素)
  9. getFirst()返回此列表的第一个元素。
  10. getLast()返回此列表的最后一个元素
  11. indexOf(Object o)返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
  12. int lastIndexOf(Object o)返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
  13. pop()从此列表所表示的堆栈处弹出一个元素。
  14. void push(E e)将元素推入此列表所表示的堆栈。
  15. remove()获取并移除此列表的头(第一个元素)。
  16. remove(int index)移除此列表中指定位置处的元素
  17. size()//返回元素个数

大体上来说LinkedList和ArrayList的方法用法都一样,无非是get,set等方法,不过LinkedList可以用作栈和队列(链表实现),因为它包含了(

push,pop)栈的进出,(offer,poll)队列的进出等方法。

最后说一下遍历

  1. 通过迭代器
Iterator iterator=students.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
  1. for循环和get方法
for(int i = 0; i < n; i++)
System.out.println(E.get(i))
  1. for each
for(int x : E){  //构造容器时用的什么类型,就定义什么类型。
System.out.println(x);
}

stack和queue

上面已经说过,LinkedList可以用来实现栈和队列。

在JAVA中Stack也有专门的类,是通过Vector实现的。

实例:

Stack<Integer> Stack = new Stack<>();  //第一种栈的实现方式
LinkedList<Integer> Stack = new LinkedList<>(); // LinkedList没有实现Stack接口,但是我们只需要用其中的关于栈的方法。
Queue<Integer> Queue = new LinkedList<>();//LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

在使用这些集合的时候,我们不需要背会所有的方法(函数),只需要知道一个大概就行了,因为编译器有方法提示嘛~

常用Java API: ArrayList(Vector) 和 LinkedList的更多相关文章

  1. 常用Java API之Ramdom--用代码模拟猜数小游戏

    常用Java API之Ramdom Ramdom类用来生成随机数字.使用起来也是三个步骤: 1.导包 import java.util.Random; 2.创建 Random r = new Rand ...

  2. 常用Java API之Scanner:功能与使用方法

    Scanner 常用Java API之Scanner:功能与使用方法 Scanner类的功能:可以实现键盘输入数据到程序当中. 引用类型的一般使用步骤:(Scanner是引用类型的) 1.导包 imp ...

  3. Java基础系列 - JAVA集合ArrayList,Vector,HashMap,HashTable等使用

    package com.test4; import java.util.*; /** * JAVA集合ArrayList,Vector,HashMap,HashTable等使用 */ public c ...

  4. 算法竞赛中的常用JAVA API:PriorityQueue(优先队列)(转载)

    算法竞赛中的常用JAVA API:PriorityQueue(优先队列) PriorityQueue 翻译过来就是优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值,每插入一个元素,仍动态维护堆 ...

  5. 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)

    算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...

  6. 算法竞赛中的常用JAVA API :HashMap 和 TreeMap(转载)

    算法竞赛中的常用JAVA API :HashMap 和 TreeMap 摘要 本文主要介绍Map接口下的HashMap和TreeMap. HashMap HashMap是基于哈希表的 Map 接口的实 ...

  7. 8.算法竞赛中的常用JAVA API :Calendar日期类

    8.算法竞赛中的常用JAVA API :Calendar日期类 摘要 在蓝桥杯中有关于日期计算的问题,正好java中的Date类和Calendar类提供了对日期处理的一些方法.Date类大部分方法已经 ...

  8. 7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别(转载)

    7.算法竞赛中的常用JAVA API :String .StringBuilder.StringBuffer常用方法和区别 摘要 本文将介绍String.StringBuilder类的常用方法. 在j ...

  9. 6.算法竞赛中的常用JAVA API :Math类(转载)

    6.算法竞赛中的常用JAVA API :Math类 求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double ...

随机推荐

  1. crontab 语法和最快速的学习

    1.Cron 时间表语法 # ┌───────────── 分钟 (0 - 59) # │ ┌───────────── 小时 (0 - 23) # │ │ ┌───────────── 月的某天 ( ...

  2. UVA 1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)

    https://vjudge.net/problem/UVA-1599 给一个n个点m条边(2<=n<=100000,1<=m<=200000)的无向图,每条边上都涂有一种颜色 ...

  3. 使用manacher算法解决最长回文子串问题

    要解决的问题 求一个字符串最长回文子串是什么.且时间复杂度 O(N) 具体描述可参考: LeetCode_5_最长回文子串 LintCode_200_最长回文子串 暴力解法 以每个字符为中心向左右两边 ...

  4. PHP的那些魔术方法(一)

    在PHP中,有一堆魔术方法,服务于类和对象.PHP虽然也是纯种的面向对象语言,但是之前的PHP还真不是,所以有一些面向对象的标准实现并不完善,比如重载.但是,我们可以通过一些魔术方法来弥补,例如__c ...

  5. linux 安装配置 jdk1.8

    一.查看Linux系统是否有自带的jdk: 1.输入:java -version 2.输入:rpm -qa | grep java 检测jdk的安装包,(注意:rpm命令符没有时记得下载一个输入:ap ...

  6. 一文让你彻底理解SELECT语句的执行逻辑

    正常情况下SELECT的书写顺序和执行顺序: 书写顺序: SELECT>FROM >WHERE>GROUP BY>HAVE>ORDER BY 执行顺序: FROM > ...

  7. 集群环境下的Session管理

    1. 集群环境下的管理HTTPSSession所遇到的问题 一台服务器对应这个一个session对象,无法在另外一个服务器互通 解决方法: 1. Session 的 Replication(复制)将当 ...

  8. 鸿蒙内核源码分析(信号生产篇) | 信号安装和发送过程是怎样的? | 百篇博客分析OpenHarmony源码 | v48.03

    百篇博客系列篇.本篇为: v48.xx 鸿蒙内核源码分析(信号生产篇) | 年过半百,依然活力十足 | 51.c.h .o 进程管理相关篇为: v02.xx 鸿蒙内核源码分析(进程管理篇) | 谁在管 ...

  9. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  10. Vue router中携带参数与获取参数

    Vue router中携带参数与获取参数 携带参数 query方式,就是?+&结构,例如/login?id=1 <router-link :to="{ name:'login' ...