2021-10-19

2021-10-19,第1张

2021-10-19 Java学习 day17 HashMap 创建HashMap

HashMap() hashMap = new HashMap<>();

无序去重。
HashMap的key是无序不重复的:原因见上一讲HashSet的元素存入顺序。
数据结构:HashMap底层存储元素是使用的数组。

HashMap方法汇总 方法含义与代码put添加—hashMap.put(key , value)containsKey判断是否含有key—hashMap.ccontainsKey(key)containsKey判断是否含有key—hashMap.ccontainsKey(value)get获取value — hashMap.get(key)getOrDefault获取key对应的value值,如果没有key就返回Default—hashMap.getOrDefault(key, Default)isEmpty判断集合是否为空—hashMap.isEmpty()putAll将集合加到集合中—hashMap.putAll(newhashMap)putIfAbsent如果没有key,加入集合中,返回null,有key,返回key对应的value—hashMap.putIfAbsent(key, value)remove删除—hashMap.remove(key)remove删除—hashMap.remove(key,value)size集合长度—hashMap.size()replace替换—replace(key, value)repalce替换—replace(key, oldValue, newValue)values获取集合的value值—Collection< Object> values = hashMap.values()keySet遍历集合(获取key值)—Set< Object > keyset = hashMap.keySet()entrySet遍历集合(获取键值映射关系)—Set> entryset = hashMap.entrySet() linkedHashMap 创建对象

linkedHashMap() map = new linkedHashMap<>();

有序去重。
基本方法与HashMap一样。
特点:有序的,key是不可重复
数据结构:双向链表
添加元素:设置了上一个节点地址和下一个节点地址
遍历元素:获取到第一个添加的节点,然后向下找下一个节点

Hashtable 创建对象

Hashtable map = new Hashtable<>();

无序去重。

ConcurrentHashMap 创建对象

ConcurrentHashMap() map = new ConccurrentHashMap<>();

无序去重。
HashMap:允许存null键null值
Hashtable:不允许存null键null值
ConcurrentHashMap:不允许存null键null值
NullPointerException 空指针异常

TreeMap 创建对象

TreeMap() map = new 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键。

配置文件 Properties

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() 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);//数组以字符串输出
}
集合总结 Collection系列:存一个值
  • List系列:有序可重复
    • ArrayList:线程不安全,存储数据
    • linkedList:线程不安全,存储数据,队列模式(顺序输出),栈模式(倒序输出)
    • Vector(已弃用):线程安全,存储数据
    • Stack(已弃用):线程安全,存储数据,栈模式
  • Set系列:无序去重
    • HashSet:线程不安全,存储数据
    • linkedHashSet:线程不安全,存储数据,有序+去重
    • TreeSet:线程不安全,自然排序
Map系列:存键值对
  • Map系列:key无序+去重
    • HashMap:线程不安全,存储数据
    • linkedHashMap:线程不安全,存储数据,key有序+去重
    • Hashtable(已弃用):线程安全,存储数据,方法中加锁,效率低
    • ConccurrentHashMap:线程安全,存储数据,JDK1.7分段式加锁,JDK1.8局部加锁+CAS,效率更高
    • TreeMap:线程不安全,存储数据,针对key自然排序

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4027397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存