1.集合框架
集合 存放對象的容器,不定長。可以存儲基礎的對象也可以存儲自定義的對象
集合框架 針對於不同數據類型打造的具有不同能力的集合群
2.Collection接口
所有集合的基類 它包含了所有容器的基本方法 因其子類對象通過不同的方式實現
3.Collection接口基本方法
Collection接口的一些基本方法
c.add(Object) 往集合中添加对象元素
c1.addAll(c2) 将c2中的所有元素添加到c1中
c.remove(Object) 删除元素
c1.removeAll(c2) 删除c1中所有和c2相同的元素
c.contains(Object) 判断是否包含该元素
c.clear() 清空该集合
c1.retainAll(c2) 保留c1中和c2相同的元素
4.迭代器Iterator
用來迭代元素,需要繼承Iterable來實現迭代器化
(1)创建集合对象
Collection coll=new ArrayList();
coll.add("1");
(2)获取容器的迭代器对象。通过iterator方法
Iterator it=coll.iterator();
(3)使用具体的迭代器对象获取集合中的元素
while(it.hasNext()){
System.out.println(it.next())
}
5.Collection
list:可以重複,有序;通过索引就可以精确的操作集合中的元素
set:不包含重复元素,无序。
List接口
List提供了增删改查动作;
增加add(element) add(index,element);
删除remove(element) remove(index);
修改set(index,element);
查询get(index);
List接口中的listIterator() 这个迭代器可以完成在迭代过程中的增删改查动作
List常用子类
ArrayList:是数组结构,长度可变(原理是创建新数组+复制数组),查询速度很快,增删较慢,是不同步的
Vector:可以増长的数组结构。 同步的 。效率低。
LinkedList:是链表结构,不同步的,增删速度很快,查询速度较慢
LinkedList的特有方法
addFirst();给头部添加元素
addLast();给尾部添加元素
getFirst();获取头部元素
getLast();获取末尾元素
removeFirst();获取头部元素,并删除头部元素
removeLast();获取末尾元素,并删除末尾元素
使用ListedList可以模拟堆栈和队列数据结构
去除List集合中的重复元素
1.先创建一个临时容器。用于存储唯一性的元素
2.遍历原容器,将遍历到的元素到临时容器中去判断,是否存在。
3.如果存在,不储存到临时容器中,如果不存在,储存到临时容器中
4.遍历结束后,临时容器中存储的就是唯一的元素。
5.将原容器清空,将临时容器中的元素添加到原容器中即可完成去重。
set接口
set集合取出元素的方式只有一种:迭代器
HashSet:哈希表结构,不同步,保证元素唯一性的方式依赖于hashCode(),equals()方法。查询速度快
保证元素唯一,就是根据对象的hashCode和equals方法来完成,如果往集合中存放自定义的对象,为了保证其唯一,就必须复写hashCode和equals方法建立属于当前对象的比较方式。
TreeSet
TreeSet集合是可以给对象进行排序的,存放进去的对象,会根据对象的自身特点进行自然顺序的排序,当存放自定义对象时,只需这个对象实现Comparable接口,并重写其中的compareTo方法便可完成排序
6.比较器
比较器可以用字符其他特点进行比较,完成功能。
LinkedHashSet
它是链表和哈希表组合的一个数据存储结构
LinkedHashSet集合可以保证元素的存入和取出的顺序
7.foreach
foreach是一个高级for循环,专门用来遍历数组和集合
格式 for(元素的数据类型 变量:Collection集合or数组){} 用于遍历Collection和数组
foreach和for循环的区别
foreach循环必须有被遍历的目标。目标只能是Collection或者是数组,其实就是实现了Iterable接口都可以使用foreach遍历
遍历数组时,如果仅为遍历,可以使用foreach,如果要对数组的元素进行操作,使用老式for循环可以通过角标操作