Java容器学习——List

基础知识

数组:

​ 优点:随机存取,可以快速访问元素

​ 缺点:静态分配内存,存在空间闲置或者溢出现象;不适合进行插入和删除操作,需要移动大量元素。

链表:

​ 优点:动态分配内存,不浪费同时也够用;对于大量元素的插入、删除操作链表优势十分明显。

​ 缺点:不能随机访问元素,得从头到尾遍历。

学科联系

​ 联想c语言数据结构线性表:顺序表采用的一组地址连续的存储单元依次存储元素,可以看成一个静态的数组;而链表是用一组任意存储单元存储数据元素(这组单元可连续也可不连续),动态分配内存空间。

​ Java中的列表它们是动态分配内存的,与c语言中的顺序表不同的是ArryList是动态分配内存的,大小会随着元素的增多而变大。LinkedList对应链表

ArrayList和LinkedList区别

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问元素,ArrayList优于LinkedList。
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

注:两者虽有区别,但都能实现一样的功能,在实际开发中,ArrayList用的比较多。

对List的常用操作

  1. add() 添加元素
  2. remove() 删除元素
  3. size() 列表的大小(列表中装有多少个元素)
  4. get(i) 从列表中获取某个元素,列表的下标也是从0开始
  5. contains()判断容器是否含有XXX东西

注:List在 java包中

​ 更多操作请查看API文档

【参考代码】

package Collection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class TestList {
public static void main(String[] args) {
List list = new ArrayList();
// 换成Linkedist 下面的操作都能一样实现 list.add("小明");
list.add("小红");
list.add("小蓝");
list.add("小绿");
list.add("小明");
System.out.println(list);//[小明, 小红, 小蓝, 小绿, 小明] list.remove("小蓝");
System.out.println(list);// [小明, 小红, 小绿, 小明] // 用Object类来接(默认)
Object obj = list.get(1);
String s = (String) obj; //由于原来的数据是String类,使用使要把Object类向下转型(强转)为String类
System.out.println(s);// 小红 System.out.println(list.size());// 计算列表的大小(长度):4
System.out.println(list.contains("小蓝"));//判断列表中是否有xxx false // 遍历列表
for (int i = 0; i < list.size(); i++) {
String str = (String)list.get(i); //从列表里边拿数据,向下转型,强转
System.out.println(str);
// System.out.println(list.get(i));
} }
}

注:

​ 列表或者容器为了它的通用性(为了把所有东西能装它里面),任何东西扔到里面是都会被向上转型为Object类:在Java中Object类是所有类的的根,Object是Java中统一的一种数据类型,所有的类都能继承它。

​ 放进去的是Object类,自然我拿出出来时也是Object类,但当初的数据类型不一定是Object类,我们想使用的是它原来的类型

我们喜欢的是那个本质的它!因此想从列表里拿数据,那就要转为原来的数据类型——向下转型,强制转化!

总结

​ 相比与大一下学期的c语言数据结构,Java中列表操作更加的灵活便捷,具体的添加、删除、获取元素等等操作都有具体的方法来实现了,而且ArrayList还是动态分配内存的,简直太强了!

​ 以上是我对刚刚学到的Java容器中List知识的一些个人总结与感悟,最后,感谢各位大佬们看到了这里!愿你韶华不负,青春无悔!

注: 由于自己刚刚开始学习Java不久,语言文字描述、技术等各方面还不是很好,如果文章有任何错误和建议,请各位大佬尽情评论留言!如果这篇文章对你有些许帮助,希望可爱亲切的您点个赞推荐一手,非常感谢啦!

Java容器学习——List的更多相关文章

  1. java容器学习

    容器是java中重要的一部分,其接口的结构如下 Collection | ------------------ Map | | | Set List HashMap | HashSet 顾名思义,容器 ...

  2. java—容器学习笔记

    一:迭代器 刚开始学容器,做了个简单的练习题.. import java.util.ArrayList; import java.util.Collection; import java.util.I ...

  3. Java容器学习之ArrayList

    一.概述 ArrayList是java中十分常用的集合类,继承于AbstractList,并实现了List.RandomAccess.Cloneable和Serializable接口.ArrayLis ...

  4. java容器学习笔记

    容器 容器的组成 容器有两个接口Map和Collection. collection接口有List类和set类. List类可以分为:Vector.LinkedList.ArrayList.CopyO ...

  5. Java容器学习之List

    List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList.LinkedList.Vector.Stack等. ...

  6. 设计模式学习笔记(十六)迭代器模式及其在Java 容器中的应用

    迭代器(Iterator)模式,也叫做游标(Cursor)模式.我们知道,在Java 容器中,为了提高容器遍历的方便性,把遍历逻辑从不同类型的集合类中抽取出来,避免向外部暴露集合容器的内部结构. 一. ...

  7. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  8. Java Web学习系列——Maven Web项目中集成使用Spring

    参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...

  9. Java容器:Set

    Set和数学中的集合十分类似,在Java中,Set是一种绝不会包含两个相等元素的存储结构.在阅读此文前请阅读Java容器:Map. Set方法 增添方法: boolean add(E e); bool ...

随机推荐

  1. SpringBoot系列(十五)整合缓存,项目会用得到的技术

    一.缓存有什么用?  缓存应该是我们每一个系统都应该考虑使用的,这样可以加速系统的访问,提升系统的性能.比如我们经常需要访问的高频数据,将此类数据放在缓存中,可以大幅度提升系统的响应速度.原因就是一般 ...

  2. 21、linux系统grup和bios加密

    21.1.grup加密(加密单用户模式): 1.使用加密算法对grup密码进行加密: 2.修改grup.conf配置文件: 21.2.bios加密(因为救援模式可以破解grup加密,所以使用bios加 ...

  3. ExtJs4学习(四):Extjs 中id与itemId的区别

       为了方便表示或是指定一个组件的名称,我们通常会使用id或者itemId进行标识命名.(推荐尽量使用itemId,这样可以减少页面唯一标识而产生的冲突) id:   id是作为整个页面的Compo ...

  4. 数据库表的自增ID createDate和updateDate 用JPA注解代替触发器实现

    对于数据库表的自增ID , createDate和updateDate 等字段,用JPA注解代替触发器实现,效率会高很多. 由于这些属性很多entity都有 可以写成两个基本entity :BaseE ...

  5. linux学习之路第七天(搜索查找类指令详解)

    搜索查找类 1.find指令 find指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示终端. ~基本语法 find [搜索范围] [选项] ~选项说明 应用案例 案例1 :按文件 ...

  6. Chirp Z-Transform

    Chirp Z-Transform 其实不是什么特别难的东西. 用于解决等比数列/类等比数列多点求值. \(b_i=\sum_{j=0}^{n}a_jc^{ij}\) 注意到 \(ij=\binom{ ...

  7. 嵌入式Redis服务器在Spring Boot测试中的使用

    1.概述 Spring Data Redis提供了一种与Redis实例集成的简单方法. 但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便. 因此,我们将学习如何设置和使用嵌 ...

  8. [刘阳Java]_大型电商网站架构技术演化历程

    今年的双十一已经过去一段,作为技术小咖啡,我们先说一下大型电商网站的特点:高并发,大流量,高可用,海量数据.下面就说说大型网站的架构演化过程,它的技术架构是如何一步步的演化的 1. 早期的网站架构 初 ...

  9. 备战- Java虚拟机

    备战- Java虚拟机 试问岭南应不好,却道,此心安处是吾乡. 简介:备战- Java虚拟机 一.运行时数据区域 程序计算器.Java 虚拟机栈.本地方法栈.堆.方法区 在Java 运行环境参考链接: ...

  10. 【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤

    问题描述 Azure Redis在使用的过程中,多次无规律的出现超时问题.抓取到客户端的异常错误后,想进一步的分析是何原因导致了如下异常呢? Timeout awaiting response (ou ...