Collection
概念
集合:集合是java中提供的一种容器
,可以用来存储多个数据.
集合和数组区别在于:
数组
的长度时固定的,集合
的长度时可变的.
数组
中存储的是同一类型的元素,可以存储基本数据类型
值和对象
.集合
存储的都是对象
(对象类型可以不一致).在开发中一般当对象多时,使用集合进行存储.
int[] arr=new int[10];
Student[] arr=new Student[3];
ArrayList<Student>=new ArrayList();
集合框架
单列集合
分类
Collection
一个独立元素的序列,这些元素都服从一条或多条规则.
-List
一个有序的集合(存取与取出元素顺序相同),允许存储重复的元素,有索引,可以使用普通的for循环遍历.
-Set
不允许存储重复元素,无索引(不能使用普通的for循环遍历)
----HashSet
TreeSet
,无序集合(存储和取出元素的顺序有可能不一致)
----LinkedHashSet
有序集合
单列集合
特点
有序性 | 有无索引 | 底层实现 | |
---|---|---|---|
List | 有序存取 | 有索引 | \ |
ArrayList | 有序存取 | 有索引 | 数组(查询快,增删慢) |
LinkedList | 有序存取 | 有索引 | 链表(查询慢,增删快) |
Set | 无序存取 | 无索引 | \ |
HashSet | 无序存取 | 无索引 | 哈希表+红黑树 |
LinkedHashSet | 有序存取 | 无索引 | 哈希表+链表 |
TreeSet | \ | \ | 二叉树(用于排序) |
Collection
无带索引方法
public boolean add(E e)
把给定对象添加到当前集合中.
public void clear()
清空集合中所有元素.
public boolean remove(E e)
把给定对象从集合中删除.
public boolean contains(E e)
判断当前集合中是否包含给定的对象.
public boolean isEmpty()
判断当前集合是否为空.
public int size()
返回集合中元素的个数.
public Object[] toArray()
把集合中的元素,存储到数组中.
Iterator<E> iterator()
返回在此Collection的元素上进行的迭代器
public static void main(String[] args) {
//使用多态创建集合
Collection<String> coll = new ArrayList<>();
//重写toString(),输出[ ]
System.out.println(coll);
//add()一般情况返回值为true
boolean b1 = coll.add("Mark");
coll.add("Love");
coll.add("Programming");
//remove() 集合中存在元素返回true,不存在元素返回false
boolean programming = coll.remove("Programming");
//contains()包含返回true,否则返回false
coll.contains("Mark");
//判断当前集合是否为空
coll.isEmpty();
}
Iterator
迭代:即Collection集合元素的通用获取方式.在取元素之前判断集合中是否有元素,有则取出,无则继续判断,直到所有元素被取出.
通过获取Iterator接口的实现类对象
(iterator()
,Collection接口
中)
boolean hasNext()
如果仍然有元素可以迭代,返回true
E next()
返回迭代的下一个元素
Collection<String> coll=new ArrayList<>();
coll.add("a");
coll.add("b");
coll.add("c");
/*1.使用集合中方法iterator()获取迭代器实现类对象,使用Iterator接口接收(多态)
注意:Iterator<E>接口泛型跟着集合走
*/
Iterator<String> it=coll.iterator();
//2.使用hasNext()判断是否还有元素
while(it.hasNext()){
//3.使用Iterator接口中方法next()取出下一个元素
String str=it.next();
System.out.prinln(str);
}
//PS:了解for循环使用迭代器
for(Iterator<String> it=coll.iterator();it2.hasNext();){
String e=it2.next();
System.out.println(e);
}
迭代器原理
hasNext() 判断有无下一元素
next() 1.取出下一个元素 2.指针向后移动