您的位置:首页 > 职场人生

黑马程序员-java学习笔记-集合框架

2014-01-09 21:03 344 查看
集合框架Collection     ArrayList al=new ArrayList
1添加元素 al.add("java1")
 al.add("java2")
 al.add("java3")
 al.add("java4")
2获取长度 al.size()
3删除元素 al.remove("java2")/al.removeAll()删除一堆元素
4清空集合 al.clear()
5判断元素是否存在al.contains("java3")
6判断是否为空al.isEmpty()
7取交集al1.retainAll(al2) ;al1中指挥保留交集

迭代器(是一个接口)Iterator
ArrayList al=new ArrayList
al.add("java1")

    al.add("java2")
al.add("java3")
al.add("java4")
Iterator it=al.iterator()//接口引用指向子类对象//获取迭代器用于取出集合中的元素
while(it.hasext())如果中还有元素返回ture
{it.next()      }用于取出下一个元素

Collection
|--List;元素是有序的,元素可以重复,因为该集合体系中有索引
  |--ArrayList;底层的数据结构使用的是数组结构(不同步);特点;查询快,但是增删稍慢(默认长度10)
  |--LinkeList;底层使用的是链表结构 ;特点;增删快,查询慢
  |--Vector;底层是数组数据结构(早期的,是同步的)被ArrayList替代
|--Set; 元素是无序的,元素不可以重复。

List
特有方法;凡是可以操作角标的方法都是该体系的特有方法
增;add(index,element)
addAll(index,collection)
删;remove(index)
改;set(index,element)
查;get(index)
subList(from,to)
listiterator()
其他方法
获取对象的位置indexOf("")
获取子列表subList(1.2)

Lise集合特有的迭代器。 LiseIterator是Iterator的子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发操作异常。

所以在迭代时,只能用迭代器地方法操作,可是迭代器的操作方法是有限的

只能对元素进行判断,取出,删除。

如果想修改,添加等操作,就需要使用其子接口 ListIterator
该接口只能通过List集合的listIterator方法获取
listIterator的方法
add()存储
hasNext()正向遍历
hasPrevious()反向遍历
next()返回列表中下一个元素
nextIndex()
remove()移除一个元素
set()替换元素(更改)

LinkedList的特有方法(旧版本)

//addFirst()

//addLast()

//getFirst()获取元素 旧版本中如果集合中没有元素会跑出异常 

//getLast()

//removeFirst()获取 并删除

//removeLast()

LinkedList的特有方法(新1.6)

offerFirst()

offerLast()

peekFirst()

peekLast()

poolFirst()

poolLast()

Set集合功能和Collection是一致的

   HashSet;底层数据结构式哈希表。线程是非同步的,保证元素唯一性的原理是判断元素的hashCoad值是否相同
如果相同还会继续判断元素的equal方法是否为真
TreeSet;特点,可以对set集合中元素排序(自然顺序) 底层数据结构是二叉树
Comparable接口可强制让对象有比较性
排序的第一种方式,让元素自身具备比较性
元素需要实现Comparable接口覆盖compareTo方法
第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
需要集合初始化时就有课比较方式。所以定义了一个类,实现了Comparator接口,覆盖compaer方法

map集合 ;该集合存储键值对,一对一一对往里存,而且办证键的唯一性。无迭代器
1添加 put (k  key, v value)
 putAll(Map<? extends K,? extends V>m)
2删除  clear()
remove(object key)
3判断  containsValue(object value)
containsKey(object key)
isEmpty()
4获取 get(object key)
 size()
 values()
 entrySet()
 keySet()
Map
|--Hashtable
|--HashMap
|--TreeMap

比较器
1Comparator接口 覆盖compare方法
2C

工具类Collections(里面的方法都是静态)
sort()排序
max()取最大元素
binarySearch()二分查找
fill(list ,"pp")将list集合中的元素全部替换成pp
replaceAll(List<T> list,T oldval ,T newval)使用另一值替换列表中某一值
reverse(List<?> list)反转指定列表中元素的顺序
reverseOrder()逆向比较器
shuffle(list)随机排序
swap(List<?> list,int i,int j)交换元素
 Arrays(用于操作数组的工具类 里面方法都是静态的)
asList;将数组变成list集合(注意,数组变成集合后不可以进行增删操作,因为数组长度是固定的)

集合变数组

collection中的方法toArray()

高级for循环

格式; for(数据类型 变量名:被遍历的集合(Collection)或者数组){}---------代替迭代器
只能对集合中元素遍历获取,不能进行其他操作

而迭代器除了遍历,还可以惊醒remove集合中的元素操作
如果是用ListItreator,还可以在遍历过程中进行增删改查的动作。
建议遍历数组还是用传统for,因为传统for可以有角标

静态导入
import java.util.*
import static java.util.Arrays.*导入的是Arrays这个类中的所有静态成员
import static java.lang.System.*导入的是System这个类中的所有静态成员
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: