硬性知识点:
package comD;
/*
* 接口没有toString方法
* */
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class newCollection {
public static void main(String[] args) {
Collection<String> c1=new ArrayList<String>();
c1.add("ff");
c1.add("ff1");
c1.add("ff2");
c1.add("ff3");
c1.add("ff4");
c1.add(" ");
System.out.println(c1);//结果为[ff, ff1, ff2, ff3, ff4, ]
}
}
-
为什么集合对象可以打印出来?
当println方法打印c1的时候,c1调用了ArrayList的toString方法,所以结果会被重写。(引用c1指向ArrayList集合的对象,语句System.out.println(c1);就相当于把c1当做实参传给了println、方法,但是println()方法并没有重写toString,原因是被ArrayList继承的类中重写了toString,) -
当已经获得了Iterator迭代器之后,如果再通过Collection的add(),remove(),clear()改变集合结构,在使用迭代器的next方法调用下一个元素的时候,会出异常
-
迭代器遍历一遍之后,如果还需要重新遍历一遍,需要重新获得一遍迭代器,因为游标已经指向了最下方
-
①实现Comparable接口 ②指定一个Comparator比较器 当两种方法同时存在的时候,自动使用Comparator比较器
问题:Custorm c1=new Custorm(“dbc”,8);
Custorm c2=new Custorm(“vbc”,31);
Custorm c3=new Custorm(“cbc”,20);
Map
Map按<键,值>对的形式存储数据
put(k,v)
values()
containsKey(k)
containsValue(v)
get(k)
remove(k)
keySet()
Set entrySet()
- HashMap
1)工作原理:底层是哈希表(数组的每一个元素都是一个单项链表),键的集合就是一个HashSet,添加元素的时候,先调用hashCode计算出哈希值(数组下标),如果单向链表中不存在,直接添加,如果单向链表中存在,调用equlas比较键的内容,覆盖掉原本存在的key值和value值 - HashTable
1)同HashMap,不同的是,它是线程安全的,但在多线程情况下也不会使用,效率过低。
2)HashTable中的重点类Properties
①键值对都是String字符串
②常用于设置/读取系统属性值
③setProperties
④getProperties
⑤通过Properites类读取配置文件 - TreeMap
1)TreeMap实现了SortedMap,可以根据键自然排序,排序的原理是二叉树原理(TreeMap中的键采用中序遍历)
2)TreeMap中的键必须是可比较的
========================================== - Map集合如何选择
1) 如果不需要根据键排序就选择HashMap
2)如果需要根据键排序,就选择TreeMap - HashMap中的键需要重写equals()和hashCode()
- TreeMap中的键是根据Comparator/Comparable的比较结果是否为零来判断是否相同,为零,键相同,不为零,直接排序
Collection
1)Collection存储数据时是单个存储的,只能存储引用类型数据
2)add() remove() iterator()contains()
- List集合
1)有序,可重复
2)为每个元素指定了一个索引值
3)add(index,o) remove(index) get(index) sort(Comparator) - ArrayList
- Vector
1)底层是数组,访问快,添加删除慢
2)初始容量为10
3)扩容:ArrayList是1.5倍,Vector是2倍
4)Vector是线程安全的,ArrayList不是线程安全的 - LinkedList集合
1)底层是双向链表,添加删除效率高,访问慢
============================================ - List集合如何选择
1)ArrayList应用于以查询访问为主,很少进行添加删除操作
2)LinkedList应用于频繁的进行添加删除操作的情况 - Set集合
1)无序,不可重复 - HashSet
1)底层是HashMap
2)HashMap就是HashMap键的集合 - TreeSet
1)底层是TreeMap
2)TreeSet就是TreeMap的键的集合
3)TreeSet实现SortedSet接口,可以对元素自然排序,要求元素必须是可比较的
3.1
创建TreeSet时指定Comparator比较器
3.2
如果没有实现Comparator比较器,元素的类要实现Comparable接口
============================================ - 如何选择HashSet还是TreeSet?
1)如果不需要进行排序选择HashSet
2)如果需要根据某个字段排序,选择TreeSet
============================================ - List集合与HashSet集合判断是否是同一个元素,需要调用对象的equals方法,元素的类需要重写equals方法
- TreeSet集合判断是否是同一个元素,根据Comparator/ Comparable的比较结果会否为零判断,如果比较结果为零,就认为是同一个元素。