一、数组,数组具有的特点及表达
1、int[] i = new int[10]
2、固定大小
3、工具类Arrays
4、元素类型相同
5、查找快:根据下标可以快速定位
6、存储空间是连续的
7、修改慢
二、链表,链表的特点及表达
1、List list = new LinkedList();
2、一个元素通过指针连接下一个元素
3、存储空间不需要连续
4、修改很快
5、查找定位慢
三、树、树根朝上,树叶朝下
四、队列、先进先出FIFO
五、栈 先进后出FILO
六、HashMap
1、充分发挥数组和链表的各自优点
2、put(key, value); // 存储数据
3、get(key);// 读取数据
4、key必须重写hashcode方法
5、数组缺省大小是16,put时根据key的hashcode与16取余来确定位置,插入到链表的头部
6、get时也要根据key的hashcode与16取余来确定位置,再根据equals方法来确定链表上的位置
7、数组(哈希桶)扩容规则:阈值缺省是0.75,元素个数达到16x0.75时并且插入的元素位置是非空时,扩容一倍到32
七、集合类分类
1、ArrayList
2、工具类Collections
八、数组与ArrayList互转
1、数组转为list
Integer[] i = new Integer[2];
i[0]=10;
i[1]=20;
List list = Arrays.asList(i);
2、list转为数组
List l = new ArrayList();
l.add(1);
l.add(2);
Integer[] objects = (Integer[]) l.toArray(new Integer[0]);
八、线程是否安全
1、线程安全。多个线程修改同一个对象,不会出现问题
ConcurrentHashMap
Hashtable
Vector
StringBuffer
2、线程不安全 。多个线程修改同一个对象,可能会出现问题
HashMap
ArrayList
StringBuilder
九、加密算法
1、摘要算法
单向,不能解密,不同的字符串加密之后也是不同的。用于密码加密
MD5 SHA-1 SHA-2 SHA-3 SHA-256
2、对称加密算法
加密和解密时所用密码相同,问题:密码的传递很难保证安全,优点:效率高
DES 3DES AES
3、非对称加密算法
加密和解密使用不同的秘钥,分为私钥和公钥,使用私钥加密,必须使用配对的公钥才能解密;使用公钥解密,必须使用配对的私钥才能解密。
优点:安全性高 缺点:慢
RSA HTTPS采用了公钥加密算法