Java容器学习——List
Java容器学习——List
基础知识
数组:

 优点:随机存取,可以快速访问元素
 缺点:静态分配内存,存在空间闲置或者溢出现象;不适合进行插入和删除操作,需要移动大量元素。
链表:

 优点:动态分配内存,不浪费同时也够用;对于大量元素的插入、删除操作链表优势十分明显。
 缺点:不能随机访问元素,得从头到尾遍历。
学科联系
 联想c语言数据结构线性表:顺序表采用的一组地址连续的存储单元依次存储元素,可以看成一个静态的数组;而链表是用一组任意存储单元存储数据元素(这组单元可连续也可不连续),动态分配内存空间。
 Java中的列表它们是动态分配内存的,与c语言中的顺序表不同的是ArryList是动态分配内存的,大小会随着元素的增多而变大。LinkedList对应链表
ArrayList和LinkedList区别
- ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
 - 对于随机访问元素,ArrayList优于LinkedList。
 - 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
 
注:两者虽有区别,但都能实现一样的功能,在实际开发中,ArrayList用的比较多。
对List的常用操作
- add() 添加元素
 - remove() 删除元素
 - size() 列表的大小(列表中装有多少个元素)
 - get(i) 从列表中获取某个元素,列表的下标也是从0开始
 - 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的更多相关文章
- java容器学习
		
容器是java中重要的一部分,其接口的结构如下 Collection | ------------------ Map | | | Set List HashMap | HashSet 顾名思义,容器 ...
 - java—容器学习笔记
		
一:迭代器 刚开始学容器,做了个简单的练习题.. import java.util.ArrayList; import java.util.Collection; import java.util.I ...
 - Java容器学习之ArrayList
		
一.概述 ArrayList是java中十分常用的集合类,继承于AbstractList,并实现了List.RandomAccess.Cloneable和Serializable接口.ArrayLis ...
 - java容器学习笔记
		
容器 容器的组成 容器有两个接口Map和Collection. collection接口有List类和set类. List类可以分为:Vector.LinkedList.ArrayList.CopyO ...
 - Java容器学习之List
		
List接口继承了Collcetion接口,Collection接口又继承了超级接口Iterable,List是有序列表,实现类有ArrayList.LinkedList.Vector.Stack等. ...
 - 设计模式学习笔记(十六)迭代器模式及其在Java 容器中的应用
		
迭代器(Iterator)模式,也叫做游标(Cursor)模式.我们知道,在Java 容器中,为了提高容器遍历的方便性,把遍历逻辑从不同类型的集合类中抽取出来,避免向外部暴露集合容器的内部结构. 一. ...
 - 【Java心得总结七】Java容器下——Map
		
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
 - Java Web学习系列——Maven Web项目中集成使用Spring
		
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
 - Java容器:Set
		
Set和数学中的集合十分类似,在Java中,Set是一种绝不会包含两个相等元素的存储结构.在阅读此文前请阅读Java容器:Map. Set方法 增添方法: boolean add(E e); bool ...
 
随机推荐
- 20 批量ping主机
			
#!/bin/bash IP_LIST="`cat /root/ip.txt`" ip_dir="/root/ip_dir" [ ! -d ${ip_dir} ...
 - 2、linux防火墙的使用(firewalld)
			
2.1.说明: 1.在 RHEL7 里有几种防火墙共存,firewalld.iptables,默认是使用 firewalld 来管理 netfilter 子系统,不过底层调用的命令仍然是 iptabl ...
 - C# 小知识点记录
			
1.当计算数据有小数点时不要使用float和double类型的数据,使用这两个会计算不准确.使用decimal 2.如果使用decimal计算数据,遇到除不进的数据有很多小数点的时候,在计算结果后面接 ...
 - POJ 1696 Space Ant 点积计算夹角
			
题意: 一只特别的蚂蚁,只能直走或者左转.在一个平面上,有很多株植物,这只蚂蚁每天需要进食一株,这只蚂蚁从起点为(0,miny)的点开始出发.求最多能活多少天 分析: 肯定是可以吃到所有植物的,以当前 ...
 - Error in render: "TypeError: Cannot read property '' of undefined"
			
描述 在用Vue的时候出现了一个令人窒息的错误 报错显示 "avatar" 未定义,但在postman中测试返回的数据确实有"avatar",可是为什么未找到? ...
 - 海量数据Excel报表利器——EasyExcel(一  利用反射机制导出Excel)
			
EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...
 - Docker:虚拟机挂起后,再启动docker容器连接失败
			
问题描述 当我们使用VMware15 Pro 创建虚拟机并运行Linux搭建的Docker时,挂起虚拟机后再次运行发现访问Docker容器失败. 解决方式 我们正常的挂起其实是:挂起客户机,博主尝试 ...
 - Docker:docker部署Sqlite3数据库
			
1.依赖Ubuntu系统安装sqlite3生成镜像 dockerfile文件 FROM ubuntu:trusty RUN sudo apt-get -y update RUN sudo apt-ge ...
 - ESP32省电模式连接WIFI笔记
			
基于ESP-IDF4.1版本 main.c文件如下: #include <string.h> #include "freertos/FreeRTOS.h" #inclu ...
 - 前端-Vue基础2
			
1.过滤器 前台通过后台传值,要对后台传过来的变量进行特殊处理,比如根据id转成中文等: 1.1 局部过滤器 局部过滤器只针对一个Vue实例 默认将|左侧count传递给右侧方法 {{count|fi ...