集合与数组之间的联系与区别
同:都是用来存储数据的,部分集合底层是数组实现的
异:数组一旦确定就不可以更改长度,且存储数据类型必须一致;集合可以根据需求进行扩容,以及存储不同类型的数据
集合分为Collection和Map两大类
Collection
Collection集合内中的元素都是无序的,所以不能通过索引进行查找
add(元素) //添加元素
addAll(集合) //将Collection集合中的元素全部添加
clear() //移除所有元素
contains(元素) // 判断是否含有这个元素
isEmpty() // 不含元素返回true
iterator() //返回此集合迭代器
remove(元素) //移除单个元素
size() //返回元素个数
toArray() //返回Collection的Object数组
Collection集合遍历
1.for
2.foreach
3.使用迭代器 col.iterator
4.使用toArray,返回Object数组进行遍历
Collection-List
有序的Collection(序列),此接口的用户可以根据索引对每个元素的插入进行精确的控制,可以根据索引进行访问
get(index) //获取该索引的值
indexOf(元素) //获取该元素的索引
subList(开始,结束) //截取,包括开始,不包括结尾
set(index,元素) //根据索引修改元素
listIterator() //返回List的迭代器
ArrayList
List子接口,底层数组实现,可以使用多态,使用父接口的方法
初始容量为10,自动扩容点为0.5
LinkedList
List子接口,底层双向链表实现,存在新增方法
addFirst(元素) //在首部拆入元素
addLast(元素) //在尾部插入元素
getFirst() //获取第一个元素
getLast() //获取最后一个元素
indexOf(元素) //返回第一次出现的索引
lastIndexOf(元素) //返回最后一次出现的索引
remove(index) //移除索引的元素
List集合遍历
1.for
2.foreach
3.使用迭代器 s.iterator
4.使用toArray,返回Object数组进行遍历
Collection-Set
一个不包含重复元素的Collection,集合中只能存在一个null值
无新增方法,直接使用父类中的方法
Set-HashSet
初始容量为16,加载因子0.75
无新增方法,直接使用父类中的方法
他的底层是HashMap实现的,由数组,链表和红黑树构成
Set-TreeSet
按照默认升序排序,当你需要插入元素是,需要内部需要实现Comparable接口,或者创建外部Comparator排序
Set set=new TreeSet(Collection集合,外部比较器)
Set遍历
1.foreach
2.使用迭代器 s.iterator
Map集合
继承Dictionary
以键值对的形式存在,键唯一不可重复,值可以重复,如果加入相同的键,值会覆盖
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容
put(key,value) //插入数据
containsKey(key) //判断是否含有key值
containsValue(value) //判断是否含有value值
get(key),返回素对应的值,没有则返回null
entrySet() //返回Set映射 key-value 视图,常用来进行遍历
values() //返回Collection的映射中的 value 视图 ,常用来进行遍历
keySet() //返回此映射中包 key 视图 ,常用来遍历
HashMap
基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子,HashMap(): 构建一个空的哈希映像
适用于Map中插入,删除,定位元素
TreeMap
基于红黑树,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
Map集合遍历
1.使用keySet进行遍历(key遍历)
Set<String> set=map.keySet();
Iterator<String> it=set.iteratr();
while( it.hasNext()){
System.out.println( it,next() )
}
2.使用values映射Collection(value遍历)
Collection col =map.values;
Iterator it = col.iterator();
while( it.hasNext()){
System.out.println( it,next() )
}
3.使用entrySet遍历(key-value遍历)
Set<Map.Entry<String,Integer>> entrys=map.entrySet();
Iterator<Map.Entry<String,Integer>> it=entrys.iterator();
while( it.haoNext()){
Map.Entry<String,Integer> entry=it.next();
System.out.println(entry.getKey() entry.getValue())
}