栈:
1、栈是运行在:内存当中,如果当前内存被清除掉后,我当前的数据,无法继续使用,也就随之清除。
2、栈的运行模式:先进后出,后进先出。栈就相当于弹夹。第一颗进去的子弹,永远最后才会发射出来。
3、在什么地方使用:
1、如果说我需要用电梯系统。
2、垃圾回收管理系统。所有的垃圾车,都运行进入了当前的垃圾站。我先到的,是不是在最里面。
3、注意,如果系统没有设置两个连接口。那么就会出现栈运行模式。
队列:
1、队列的运行模式:先进先出,后进后出。与栈的运行模式,相反。
2、队列与栈的区别:
1、在添加内容过程:还需要将内容进行压栈么?
2、在内容排序过程中,优先进去的顺序出来优先。
3、日常生活中:排队,挂号,等等。
数组:
1、数组的运行模式:当我创建数组后,当前数组在内存中开辟一个足够容量的数组对象。
2、数组的增删慢:
1、如果是直接增加,那么会比较快,因为我不需要管理其他的内存对象。
2、如果在指定角标进行添加,那么就涉及到其他内容也会连带的进行改变。
3、如果我需要指定内容进行删除,也是同理,删除当前角标的元素后,其他数据与角标也要发生改变。
3、数组为什么查询快:
数组在进行查询过程,我直接可以获取到当前数组的角标就能查询到数据内容。精准获取到角标对象后,直接按照角标内容获取,无需进行遍历。
链表:
1、增删快,查询慢:
增删:通过外部进行直接增加对象内容与地址值,通过链接方式,进行增加,无需动用后面的内容与对象联动修改。
查询:链表不像数组,可以通过角标定位,链表需要查询,那么必须找到头。通过第一个内容找到第二个内容,通过第二个内容继续寻找第三个内容。以此类推。
集合:
List:
ArrayList:数组
LinkedList:链表
Set:
TreeSet:
为什么TreeSet集合没有角标。Set集合里面存储的就相当于HashMap的键,然后他不能存储重复元素。
如果存储重复元素,那么当前使用的是覆盖操作。将相同元素的两个对象,覆盖为一个对象。
Set集合:不能通过角标进行获取对象。如果想要进行获取对象,那么必须通过迭代的方法进行单个获取。
Map:
HashMap:hash表。
通过Key可以获取到Value对象。那么我们现在可以吧Key当成一个对象名。
Map集合获取对象:通过键获取Value。
删除对象:通过Key,删除value。
如果删除想通过value进行删除,那么就需要将Hashmap转换为其他集合进行删除。
注意:
1、Map集合中,不能一个键对应多个值。
2、Map集合中,可以多个键,对应一个值。
3、如果必须要使用Map集合一个键,对应多个值。我们可以使用集合的嵌套模式进行,将value类型,设置成List集合,那么List集合里面是否有多个内容,就是List集合说了算