栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-19

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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自然排序
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号