Java知识整理(六)之SE.集合框架

集合类(Collection):数组的长度是固定的,为了适应变化的数组,Java提供了集合类,
数组储存的是同一种类型的元素,而集合可以储存不同类型的元素。数组可以储存基本数据类型和引用数据类型
而集合只能储存引用数据类型
Collection(List有序,可重复;Set无序唯一):是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。
Collection c = new ArrayList();
boolean c.add(obj); //添加一个元素
boolean c.add(Collection c); //添加一个集合的元素
boolean c.remove(obj); //移除一个元素(给定元素第一个,equals比较为true);
boolean c.removeAll(Collection c1); //移除一个集合的元素,只要有一个就return true;
boolean c.contains(obj); //判断集合中是否包含指定的元素
boolean c.containsAll(Collection c1); //判断集合中是否包含指定的集合元素(包含所有元素才叫包含)
void c.clear(); //移除所有元素
boolean c.isEmpty(); 判断集合是否为空
int c.size(); 集合的长度
集合-->数组:Object[] c.toArray();
迭代器方法:
Iterator it = c.iterator(); 获取迭代器
boolean it.hasNext(); 判断是否还有下一个元素
E it.next(); 返回迭代器的下一个元素
it.remove(); 迭代器删除元素


增强for(JDK5新特性,本质为迭代器)(不能用集合方法删元素):
for(String s :arr){
System.out.println(s);
}
List集合的特点:有序(存储和取出的元素一致),可重复
List集合方法:
List list = new ArrayList();
void list.add(index,ele); 在指定位置添加元素,原位置及后续元素顺序向后移动
list.get(index); 获取指定位置的元素
ArrayList:底层数据结构是数组,增删慢,查询快,线程不安全,效率高
Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低
LinkedList:底层数据结构是链表,增删快,查询慢,线程不安全,效率高
LinkedList集合方法:
LinkedList link = new LinkedList();
void link.addFirst(obj); 集合开头添加元素
void link.addLast(obj); 集合结尾添加元素
obj link.getFirst();
obj link.getLast();
obj link.removeFirst(); 返回被删元素
obj link.removeLast(); 返回被删元素
Set接口:无序(存储顺序和取出顺序不一致),唯一;有自己的存储顺序
TreeSet(排序和唯一):底层是二叉树结构,能够对元素按照某种规则进行排序
自然排序:
public class Point implements Comparable<Point>{
public int compareTo(Piont p){
int num = this.getX()-p.getX();
int num2 = num==0?this.getY()-p.getY():num;
return num2;
}
}
比较器排序:
Comparator<String> com1 = new Comparator<String>(){
public int compare(String o1,String o2){
return o1.length()-o2.length()
}
};
Collections.sort(list,com1);
HashSet:有自己的储存顺序,例如从小到大
Map集合:可以存储键值对的元素,将键映射到值的对象,一个映射不能包含重复的键;每个
键最多只能映射到一个值.Map集合存储元素是成对出现的,键是唯一的,值是可重复的
Map<Integer,String> map = new HashMap<Integer,String>(10);
//10是容量,但是.size()还算要看放进去几个键值对。Collection中也一样
V map.put(key,value); 添加元素,若已有key,value被覆盖,返回值为“前妻”。若无该key,返回null
V map.remove(key); 根据键删除键值对元素,并把删除掉的值返回
void map.clear(); 移除所有的键值对元素
int map.size(); 返回集合中键值对的对数
boolean map.containsKey(key);判断集合是否包含指定的键
boolean map.containsValue(value);判断集合是否包含指定的值
boolean map.isEmpty(); 判断集合是否为空
Set<Entry<String,Integer>> entryset = map.entrySet(); 获取键值对对象的集合
V map.get(key); 根据键获取值,无该键返回null
Set<K> keyset = map.keySet(); 获取集合中所有键的集合
Collection<V> values = map.values(); 获取集合中所有值的集合
LinkedHashMap:有序的Map
TreeMap:(TreeSetf大部分方法调用了TreeMap中方法,无序(按照某种规则排序))
Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
Vector和Hashtable,Properties是同步的,ArrayList和HashMap不是同步的
栈(Stack):先进后出;
E pop():移除栈顶部对象,并返回该值;E push(E item):把对象压入栈顶;E peek():查看栈顶对象;boolean empty():测试该栈是否为空
队列:先进先出:BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(10);
boolean b =queue.offer(i,5,TimeUnit.SECONDS);将对象添加至队尾;Integer num  =queue.poll(5,TimeUnit.SECONDS);从队首删除并返回一个元素5,TimeUnit.SECONDS 可不写
实现HashCode只有在Hash集合中才有意义
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值