HashMap
无序去重。
HashMap的key是无序不重复的:原因见上一讲HashSet的元素存入顺序。
数据结构:HashMap底层存储元素是使用的数组。
linkedHashMap
有序去重。
基本方法与HashMap一样。
特点:有序的,key是不可重复
数据结构:双向链表
添加元素:设置了上一个节点地址和下一个节点地址
遍历元素:获取到第一个添加的节点,然后向下找下一个节点
Hashtable
无序去重。
ConcurrentHashMap 创建对象ConcurrentHashMap
无序去重。
HashMap:允许存null键null值
Hashtable:不允许存null键null值
ConcurrentHashMap:不允许存null键null值
NullPointerException 空指针异常
TreeMap
在使用TreeSet或者TreeMap来保存自定义对象时,必须让自定义对象的类实现Comparable接口,并重写其compareTo()方法,否则会报cannot be cast to java.lang.Comparable异常。
public class Student{} TreeMap() map = new TreeMap<>(); map.put(new Student(), String);//ClassCastException异常 public class Student implemens comparator { @Override public int compara(Student o, Student o){ } } TreeMap () map = new TreeMap<>(); map.put(new Student(), String);//ClassCastException异常 public class Student implemens comparable { @Override public int comparaTo(Student o){ } } TreeMap () map = new TreeMap<>(); map.put(new Student(), String);//无异常
对key值进行自然排序。
内置比较器、外置比较器(见上一章TreeSet)
TreeSet、TreeMap不允许null键。
1、在src文件中新建一个文件名为DBconfig.properties
注意:名用大写比较规范,=两边别打空格,名值对写完后不打分号,不需要分号,不需要双引号。
USERNAME=hhy
PASSWORD=123123
2、在Java文件调用配置文件属性
//创建配置文件对象 Properties p = new Perporties(); //讲配置文件加载到对象中 p.load(Test01.class.getClassLoader().getResourceAsStream("DBConfig.properties")); //获取配置文件中的数据 String username = p.getProperty("USERNAME"); String password = p.getProperty("PASSWORD");ArrayList源码
ArrayList<>()底层数据结构为一维数组
linkedArrayList源码linkedList<>()底层数据结构为双向链表
集合工具类Collections(用于Collection系列)public static void main(String[] args){ ArrayList集合总结 Collection系列:存一个值() list = new ArrayList<>(); Collections.addAll(list, 1,4,33,3,2,44);//批量添加 Collections.sort(); //自定义排序 Collections.sort(list,new Comparator (){ @Override public int compara(Integer o1, Integer o2){ return o1 - o2;//升序 return o2 - o1;//降序 } }); Object[] ss = list.toArray();//集合转为数组 String str = Arrays.toString(ss);//数组以字符串输出 }
- List系列:有序可重复
- ArrayList:线程不安全,存储数据
- linkedList:线程不安全,存储数据,队列模式(顺序输出),栈模式(倒序输出)
- Vector(已弃用):线程安全,存储数据
- Stack(已弃用):线程安全,存储数据,栈模式
- Set系列:无序去重
- HashSet:线程不安全,存储数据
- linkedHashSet:线程不安全,存储数据,有序+去重
- TreeSet:线程不安全,自然排序
- Map系列:key无序+去重
- HashMap:线程不安全,存储数据
- linkedHashMap:线程不安全,存储数据,key有序+去重
- Hashtable(已弃用):线程安全,存储数据,方法中加锁,效率低
- ConccurrentHashMap:线程安全,存储数据,JDK1.7分段式加锁,JDK1.8局部加锁+CAS,效率更高
- TreeMap:线程不安全,存储数据,针对key自然排序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)