泛型表示 E,K,V,T
集合框架1
集合的概念
集合的好处
集合的层次结构
集合的概念
集合是一个包含一组对象的对象,也称为容器
集合中的每一个对象叫集合的元素
来自java.util包。
集合的好处
可以使用索引存储和获取值,效率高
提供了编译时检查
提供了比数组更丰富的功能
注意
集合是操作对象的,基本数据类型需要装箱与拆箱
集合是泛型的
集合体现了数据结构的特点,还提供了基于某些算法的类
集合框架包含
接口(设计好的大量)
实现类
算法类(典型的包含排序与查找)
有一张层次结构图
collection接口(根接口)
方法分类:
基本操作:size,isEmpty,contains,add,remove,iterator
组操作:addAll,clear,containsAll,removeAll,retainAll
聚合操作:stream,parallelStream
数组操作:toArray
比较操作:equals,hashCode
集合框架2
遍历集合(三种方式),这是一个通用操作
遍历是指一次访问集合中的所有元素
三种方式:
使用Iterator
使用for-each循环
使用forEach方法
package java_20180212_api_collections; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args) { Collection<String> c1=new ArrayList<>(); c1.add("a"); c1.add("b"); c1.add("c"); c1.add("d"); c1.add("e"); Iterator<String> iter=c1.iterator(); while (iter.hasNext()) { // System.out.println(iter.next()); iter.next(); // iter.remove(); } System.out.println(c1.size()); System.out.println("==============="); for (String s : c1) { //c1.remove(s)不能这样子用 System.out.println(s); } System.out.println("==============="); //传一个lambda表达式 // c1.forEach(s->System.out.println(s)); //传一个方法引用 c1.forEach(System.out::println); } }
集合框架3
List接口
ArrayList与LinkedList这两个类
List接口
存储有有序对象的集合
可以有重复元素
可以存储多个null
两个广泛使用的子类
ArrayList:以数组实现存储数据,可变长度的数组
LinkedList:以链表实现存储数据
集合框架4
Set接口与其子类HashSet,LinkedHashSet
set子接口SortedSet接口与TreeSet子类
set接口特点
保存不重复的元素
顺序不能保证
HashSet是最常用的子类
LinkedHashSet是HashSet的子类,能维护顺序