JAVA集合(容器)概念:
当我们需要存储一组一样(数据类型相同)的数据时需要用容器进行存储,数组就是这样一种容器,但是数组长度一经定义就不能再改变。
在实际开发中我们需要用到可以动态增长的容器,数组就不满足条件。
集合API:
集合体系概述:java集合框架由很多接口、抽象类、具体类组成,都位于java.util包中。
Collection接口(单列集合):
Collection是单列集合,定义了存储一组对象的方法,其子接口Set与List分别定义了存储方法。
List接口中元素有顺序(添加顺序),且可以重复元素;
Set接口中元素不可以重复
List接口及实现类:
List接口继承了Collection接口,其下有三种具体实现的类
Arraylist:采用数组存储;
实现了长度可变的数组,在内存空间中连续分配。遍历元素和随机访问元素的效率较高。
熟悉ArrayList常用方法;
Linkedlist:采用链表存储;
链表存储方式,插入、删除元素时效率较高。
熟悉LinkedList常用方法;
Vector:采用数组存储,添加了同步锁,线程是安全的
List接口集合迭代:
for循环遍历;
增强·for循环遍历;
迭代器遍历(Iterator)
Set接口:
继承了Collection接口,Set中存储的元素是不重复的,而且是无序的,Set中的元素是没有索引的
Set接口有两个具体的实现类:
HashSet:无序性(不可以通过索引来访问元素);
HashSet类中元素不能重复(唯一性);
基于哈希表实现;
可以存储最多一个为null的元素;
非线程安全,需要使用线程安全的方式进行访问;
元素添加删除查找的时间复杂度为O(1)
TreeSet:元素可以按照指定顺序排序;
存储的对象必须实现Comparable接口
package com.ffyc.javacollection.day8.set;
import java.util.TreeSet;
public class TreesetDemo1 {
public static void main(String[] args) {
/*
TreeSet
不能存储重复元素
可以根据值进行排序,底层运用了树型结构,树结构本身就是有序的
向树形结构中添加元素时,如何判断元素大小以及元素是否重复
向TreeSet中添加的元素类型必须实现CompareTo接口,重写compareTo()
每次添加元素时,调用compareTo()进行元素大小判断(小于放左边,等于就是重复,覆盖元素,大于放右边)
*/
TreeSet<Integer> treeSet=new TreeSet();
treeSet.add(66);
treeSet.add(55);
treeSet.contains(33);
treeSet.add(2);
treeSet.add(6);
treeSet.add(5);
treeSet.add(4);
treeSet.add(3);
treeSet.isEmpty();
treeSet.iterator();
for (Integer b:treeSet){
System.out.println(b);
}
}
}
运行结果:
Set接口集合迭代:
(1)增强for循环;
(2)迭代器循环(Iterator)
Map接口(双列集合):
Map接口概述:
将键映射到值的对象,
一个映射不能包含重复的键,
每个键最多只能映射到一个值
熟悉Map接口常用方法;
HashMap:
元素的key值是不能重复的,元素排列顺序是无序的,可以存储一个为null的键
TreeMap:
如果需要得到一个有序的Map,就是用TreeMap,key所在类必须实现Comparable接口
HashTable:
实现了同步(函数同步),即它是线程安全的;
其中的key和value都不可以为null;
HashTable中的映射不是有序的
Collections类:
Collections是集合类的工具类,与数组的工具类Arrays相似
其提供了一系列静态方法,不需要实例化对象就可以直接调用
用于操作集合