java 集合框架

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循环可以通过角标操作

上一篇:scala的集合类型


下一篇:笔记(九)