集合总结
/*
集合知识点总结
(1)Collection&List
(2)Set
(3)Map
/
/
* Collection -> 单列集合的顶级接口.
* 常用方法:add(E e) -> 添加元素到集合的末尾.
* remove(Object o) -> 删除指定元素,如果删除成功返回true,如果失败返回false.
* isEmpty() -> 判断集合是否为空.
* size() -> 获取集合的长度(获取集合中元素的个数)
* clear() -> 清空集合.
*
* Collection没有索引的概念,所以我们使用迭代器来遍历Collection.
/
Collection c = new ArrayList<>();
c.add(“程序员”);
c.add(“程序猿”);
c.add(“java程序员”);
/
1.获取迭代器.
2.通过迭代器hasNext()和next()方法搭配使用.
/
Iterator iterator = c.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
}
/
增强For(底层也是迭代器)
*/
for (String s : c) {
}
//ArrayList:特点(1)有序,元素的存入顺序和取出顺序一致 (2)元素可重复 (3)有索引的概念.
ArrayList<String> list = new ArrayList<>();
list.add("程序员");
list.add("程序猿");
list.add("java程序员");
/*
普通For循环
*/
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
/**
* 增:add(int index,E e) -> 将e添加到指定的索引.
* add(E e) -> 添加元素到末尾.
* 删:remove(int index) -> 删除指定索引的元素,删除成功返回被删除的元素,失败则出现异常.
* remove(Object o)
* 改:set(int index,E e) -> 使用e替换指定索引的元素,如果替换成功则返回被替代的元素,如果失败,就出异常.
* 查:get(int index) -> 获取指定索引的元素.
* 只要和索引有关,就要注意索引越界的问题.
*/
//ArrayList底层是数组,内存连续,所以说查询快/增删慢.LinkedList底层是链表,内存不连续,所以增删快/查询慢.
//栈数据结构:先进后出,队列数据结构:先进先出.
/**
* Set特点:元素唯一.
* HashSet特点:元素唯一/元素无序.
* add(E e) -> 将元素添加到末尾.
* ....同Collection接口中的方法.
* LinkedHashSet特点:元素唯一/元素有序(存入和取出顺序)
* TreeSet特点:元素唯一/元素有序(元素按照某种规则进行排序)
* 排序的两种方式:(1)自然排序 -> 要求TreeSet中元素所在的类要实现Comparable接口,实现compareTo方法.
* (2)比较器排序Comparator,在构造TreeSet的时候,将比较器接口的实现类对象作为参数传入,匿名内部类的方式..
*/
TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int result = o1.getAge() - o2.getAge();
return result;
}
});
/*
Map:双列集合的顶级接口.
能够知道Map集合的特点 -> 一个键+一个值 -> 键唯一,如果重复了,后面的数据会覆盖之前的数据,键可以为NULL,但只有能一个,值可以为NULL,可以有多个.
能够知道Map集合的基本方法 -> clear() 清空集合中的元素 isEmpty() 判断集合是否为空 size() 返回集合中键值对的个数.
remove(Object key) -> 删除指定的key和它对应的value,如果成功则返回key对应的值.
remove(Object key,Object value) -> 删除指定的键与值,返回true表示删除成功,返回false,表示删除失败.
put(K k,V v) -> 将一个键和一个值存储到Map中.
containsKey(Object key) -> 判断Map中是否包含指定的键,如果包含返回true,如果不包含返回false.
containsValue(Object value) -> 判断Map中是否包含指定的值,如果包含返回true,如果不包含返回false.
能够知道Map集合的获取方法
get(Object key) -> 获取参数在Map中对应的value,如果有则返回value值,如果没有返回null.
keySet() -> 返回Map中所有键的集合(Set)
values() -> 返回Map中所有的值的集合(Collection)
entrySet() -> 返回Map中所有的键值对对象的集合(Set)<Map.Entry<K,V>>
能够使用两种方式完成HashMap集合的遍历
1.横向遍历
2.纵向遍历
*/
HashMap<String, String> map = new HashMap<>();
map.put("永琪", "小燕子");
map.put("尔康", "紫薇");
map.put("乾隆", "皇后");
map.put("小邓子", "小卓子");
/*
纵向遍历 ->
1.获取所有键的集合(keySet)
2.遍历返回的集合,获取每一个key
3.通过获取到的每一个key,作为get方法的参数,找到key对应的value.
*/
Set<String> keySet = map.keySet();
for (String key : keySet) {
String value = map.get(key);
}
/*
横向遍历 ->
1.获取所有的键值对对象的集合(entrySet)
2.遍历返回的集合,获取每一个键值对对象 Entry.
3.通过键值对对象的getKey和getValue方法获取其封装的键与值.
*/
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
String key = entry.getKey();
String value = entry.getValue();
}
/*
* Collections -> 对于单列集合的工具类.
* sort(List<?> list,Comparator c) -> 根据指定的规则对List进行排序.
* reverse(List<?> list) -> 将List中的元素进行翻转.
* shuffle(List<?> list) -> 打乱List中的元素顺序.
*/