集合:
ArrayList :内部用数组存放数据,其数组长度可变
方法:add(); clear(); get(); size(); set(); contains()判断内部是否存在与相等指定数据
remove(Object); 找到与指定数据相等的数据移除;
remove(index); 移除指定的位置;indexOf(); 获得与指定数据相等的数据位置
subList(fromIndex, toIndex); 获得一个子集
HashMap:用于数据的快速查找
方法:put(key,value); get(key); remove(key);clean(); size(); containskey(key); containsValue(value);
存放数据步骤:
1)获得key 的hashCode();
2)通过哈希值和数组长度运算产生一个数组索引位置
3)将key和value封装为一个Entry对象
4)将 Entry 放入数组的index位置
HashSet
其内部是一个HashMap, 数据作为HashMap的健保存 ,放入数据:1)不重复;2)顺序不确定
add(Object); remove(Object); clear(); contains(Object);
只能用迭代的方法遍历数据,iterator()获得迭代器;
遍历 Map
1)keySet() 获得所有的键,作为一个Set类型返回,用迭代器迭代Set所有的键。
2)entrySet() 获得所有的Entry,作为Set类型返回。
Collection接口
add(); addAll();clear();contains(Object); isEmpty() 返回集合是否为空,当集合长度为0时返回true,否则为false
iterator();返回一个Iterator对象,用于遍历集合里的元素; remove(Object);
LinkedList: 双向链表结构
与ArrayList比较:
1)LinkedList 操作两端数据效率高
2)LinkedList 操作中间数据效率低
3)ArrayList 访问任意位置效率都高
4)LinkedList 索引值遍历效率低,迭代器遍历效率高
方法:addFirst(Object); addLast(Object);getFirst();getLast(); removeFirst();removeLast();
offer(Object) 在尾部加入数据,相当于addLast();
peek() 获得头部的数据,相当于getFirst();
poll() 移除头部数据,相当于removeFirst();
push() 在头部加入数据,相当于addFirst();
pop() 从头部移除数据,相当于 removeFirst();
Queue 队列操作(先入先出 FIFO)
Stack 栈(后入先出,LIFO)
Collections
sort(List);sort(List, Comparator); shuffle(List) 打乱顺序;binarySearch(List,Object) List中的数据是有序的,对象在list中索引位置,找不到返回-1;
List与数组之间的转换:
1) List.toArray(); 返回Object[] 数组;
List.toArray(new String[]); 根据参数类型,返回相同类型的数组;
2) String[ ] arr={"aaa","bbb","ccc"};
List<String> list = Arrays.asList(arr);
List<Integer> list = Arrays.asList(1,1,1,1,1);