java基础

一、递归

例:数学中的阶乘

 

 

 递归可以减少自己代码量,但是随着递归深度越大占用内存越大,能不用递归尽量不用递归。

二、数组

1、数组 集合的区别

数组:在声明时便规定了大小,数组是大小固定的,不能自动增长,并且同一个数组只能存放类型一样的数据,

集合:JAVA集合可以存储和操作数目不固定的一组数据。集合的长度的是可变的,可以根据元素的增加而增长。

数组对于元素的删除,插入显得非常复杂。

集合的区别

集合的之间区别:
List、Set、Map的区别
1.List允许存重复对象,有序的,可以插入多个null元素
2.Set不允许重复对象,无序的,只允许一个null元素
3.Map是键值对存储数据,键是唯一的,value可以有相同的值

  1. 重复性:
    • List允许存在重复的元素,也就是说List中可以在不影响现有元素的值及其索引的同时插入新的重复元素。
    • Set不允许存在重复的元素,Set集合都不允许插入重复元素。
    • Map是一种以键值对形式存储元素的映射类型集合,对Map而言key(键)是唯一的,value(值)是可重复的。
  2. 空值性:
    • List允许任意数量的空值。
    • Set最多允许一个空值。
    • Map只允许出现一个空键,但允许任意数量的空值。
  3. 排序性:
    • List保持每个元素的插入顺序。
    • Set中的元素都是无序的,但某些Set的实现类可以以某种顺序对其中的元素进行排序。(PS:LinkedHashSet按照元素的插入顺序进行排序。)
    • Map与Set一样对元素惊醒无序存储,但Map某些实现类也会对元素进行排序。(PS:TreeMap按照键对其中的元素进行升序排序,LinkedHashMap按照每个元素的插入顺序进行排序)
  4. 实现类:
    • List:ArrayList、LinkedList等等。
    • Set:HashSet、LinkedHashSet、TreeSet、SortedSet等等。
    • Map:HashMap、TreeMap、WeakHashMap、LinkedMashMap、IdentityHashMap等等。
  5. 使用场景:
    • 如果需要时常根据元素的索引值进行查询操作,那么List(ArrayList)是一种不错的选择。
    • 如果你的数据不允许重复的值存在,Set是比较适合的选择。
    • 如果需要保留每个元素的插入顺序,那么首选还是List集合。
    • 如果你的数据需要进行key-value映射,那么就用Map。

ArrayList、LinkedList、Vector的区别
1.ArrayList非线程安全,非同步的; 动态数组的数据结构,数据增长默认是一半,查询比较快,增删比较慢,底层是数组结构
2.LinkedList链表的数据结构,新增和删除比较快,需要移动指针,但是查询慢
3.Vector线程安全的,同步的;数据增长默认是一倍

HashMap与HashTable的区别
1.HashMap线程非安全,非同步的;允许null key和null value;HashMap初始容量16

2.HashTable线程安全,同步的;不允许null key和null value;Hashtable初始容量11

posted @ 2021-04-15 16:23  javazmd  阅读(41)  评论(0编辑  收藏  举报