基础 - Array,Collection(list,set),Map

数组,collection,map的定义,原理,用法,区别等。


■ 数组

1.相同数据类型的元素组成的集合

2.元素按现行顺序排列。所有元素通过下标做表示来访问。

3.数组创建后大小不能改变。

4.扩容,其实就是创建一个更大的新数组并将原有数组的内容复制到其中

5.数组名.lenth即数组元素的个数,元素下标0~lenth-1

6.排序方法:插入排序,冒泡排序,快速排序


■ 集合Collection(interface)

1.两个实现接口list(可重复集),set(不可重复集)

2.用来存储对象(特定数据结果)的容器。

3.是否重复是根据equals()的比较结果判断的

4.集合的存储方式:集合存储的都是引用类型元素,集合只保存每个元素对象的引用,并非将元素对象本身存入集合。


 5.迭代器(Iterator)用于遍历集合元素

- boolean hasNext();  判断集合是否还有元素可以遍历。

- E next();  返回迭代的下一个元素。

- void remove(); 迭代后才可以删除,而且要使用Iterator的remove方法!

list的实现类(arrayList,LinkedList):可重复集

6.泛型:java SE 5.0引入

泛型的本质是参数化类型。指定放入集合中元素的类型。

java编译器会根据泛型进行类型检查,以减少代码在运行时出现错误的可能性。


Collection - List

1.list接口是Collection的子接口。用于定义线性表数据结构。

相当于存放对象的数组,只是元素的个数可以动态的增加减少。

2.实现类:ArrayList,LinkedList,Vector

2.1 ArrayList

1.非线程安全

2.基于对象数组

3.在查询(get)、遍历(iterator)、修改(set)使用的比较多的情况下,用ArrayList

4.list->数组: 类型[] toArray();

  数组->list: static <T> List <T> asList <T...a>   :此集合不能进行增删操作,对集合元素的修改会影响到原数组对应的元素

5.队列(Queue):只能从线性表的一端添加(offer),另一端取出(poll)。即,先入先出

2.2 LinkedList

1.非线程安全

2.基于环形双向链表

3.在增加(add)、删除(remove)使用比较多的情况下,用LinkedList

4.队列(Queue):队列常进行add或remove时,由LinkedList实现,效率高

5.栈(Deque)Queue的子接口,双端队列,LinkedList实现。限定仅能从一端进出,即为栈,先入后出

2.3 Vector

1.线程安全

2.扩容机制与ArryList不同

3.需要线程安全而且对效率要求比较低的情况下,使用Vector


Collection - set

3.1 HashSet

重写equals()和hashcode()方法

3.2 TreeSet

自然排序,或根据Comparator进行排序


■  Map

查询表,用于存储“Key - Value”映射对。Key是Value的索引,Key的对象在集合中不可以重复

1.根据内部数据结构不同,Map接口有多种实现类。

1.1.内部为hash表实现的HashMap

1.2.内部为排序二叉数实现的TreeMap






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值