您正在查看:2019年

Java中的Map集合、Collections集合工具类

今日总结

1 Map

​ Map 的体系结构和 Set 体系结构非常相似,Set 体系底层基本上使用都是 Map 体系

  • Set

    • HashSet

      • LinkedHashSet
    • TreeSet
  • Map

    • HashMap

      • LinkedHashMap
    • TreeMap

    对于Map来说,每种集合底层也使用了数据结构,但是其数据结构只针对键有效,对值无效

1.1 Map集合概述和特点

  • Map集合概述

    interface Map<K,V>  K:键的类型;V:值的类型
  • Map集合的特点

    • 键值对映射关系,键和值是一一对应的,一个键只能对应唯一的一个值
    • Map是一个双列集合,第一列是键,第二列值值,一个键对应一个值
    • 键不能重复,如果键重复,则值覆盖,只会保留一个相同的键,值可以重复
    • 元素存取无序

1.2 Map集合的常用方法

  • 常用方法

    方法名说明
    V put(K key,V value)添加元素
    V remove(Object key)根据键删除键值对元素
    void clear()移除所有的键值对元素
    boolean containsKey(Object key)判断集合是否包含指定的键
    boolean containsValue(Object value)判断集合是否包含指定的值
    boolean isEmpty()判断集合是否为空
    int size()集合的长度,也就是集合中键值对的个

1.3 Map集合的获取功能

  • 常用方法

    方法名说明
    V get(Object key)根据键获取值
    Set keySet()获取所有键的集合
    Collection values()获取所有值的集合
    Set<Map.Entry<K,V>> entrySet()获取所有键值对对象的集合

1.4 Map集合的遍历(方式1)

  • 遍历思路
  • 1.通过keySet()方法获取所有键的集合

    • 2.遍历集合,获取每一个键,可用增强for实现
    • 3.通过get(K k)根据键找对应的值

1.5 Map集合的遍历(方式2)

  • 遍历思路

    • 1.通过entrySet()方法获取所有的键值对对象(Entry)的集合

      • Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
    • 2.遍历键值对对象的集合,得到每一个键值对对象

      • 用增强for实现,得到每一个Map.Entry
    • 3.根据键值对对象的getKey()和getValue分别获取键和值

      • 用getKey()得到键
      • 用getValue()得到值

2 Collections集合工具类

2.1 Collections概述和使用

  • Collections类的作用

    ​ 是针对集合操作的工具类

  • Collections类常用方法

    方法名说明
    public static void sort(List list)将指定的列表按升序排序
    public static void reverse(List<?> list)反转指定列表中元素的顺序
    public static void shuffle(List<?> list)使用默认的随机源随机排列指定的列表
  • Collection 和 Collections 的区别

    • Collection 是单列集合的顶层接口
    • Collections 是集合的工具类,里面提供了很多方便对集合进行操作的方法

Java中的Set集合,泛型,可变参数

今日总结

  • Set集合

    • HashSet

      • LinkedHashSet
    • TreeSet
  • 泛型
  • 可变参数

1 Set集合

1.1 体系

Collection

  • List

    • ArrayList
    • LinkedList
  • Set:存取无序,没有索引,不能存储重复元素

    • HashSet

      • LinkedHashSet
    • TreeSet

Set接口中没有特有方法,其中和Collection完全相同

1.2 哈希值

  • 哈希值

    ​ 是 JDK 根据对象的地址或者字符串或者数字算出来的 int 类型的数值

  • 如何获取哈希值

    ​ Object 类中的 public int hashCode():返回对象的哈希码值

  • 哈希值的特点

    • 同一个对象多次调用 hashCode() 方法返回的哈希值是相同的
    • 默认情况下,不同对象的哈希值是不同的。而重写 hashCode() 方法,可以实现让不同对象的哈希值相同。

1.3 HashSet集合

  • HashSet 集合的特点

    • 底层数据结构是哈希表
    • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
    • 没有带索引的方法,所以不能使用普通 for 循环遍历
    • 由于是 Set 集合,所以是不包含重复元素的集合

- 阅读剩余部分 -

Java中的集合

1.Collection集合

1.1 集合体系结构

  • 集合类的特点

    ​ 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变

  • 集合类的体系图

    01.png

1.2 Collection集合概述和基本使用

  • Collection 集合概述

    • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
    • JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
  • Collection 集合基本使用

    public class CollectionDemo01 {
        public static void main(String[] args) {
            //创建Collection集合的对象
            Collection<String> c = new ArrayList<String>();
    
            //添加元素:boolean add(E e)
            c.add("hello");
            c.add("world");
            c.add("java");
    
            //输出集合对象
            System.out.println(c);
        }
    }

- 阅读剩余部分 -

Win10平台下JDK的下载安装与环境配置

最近学习了配置JDK环境,记录下来供以后参考。 乖.png

一、下载

1.首先打开JDK的官方下载页面:https://www.oracle.com/technetwork/java/javase/archive-139210.html
里面有Java SE所有版本的下载:
JDK所有版本下载
2.选择你需要的Java SE版本,在这里我要下载的是windows版本的,必须要接受协议才能下载,选择"Accept License Agreement"
JDK下载
3.可能需要你登录才能下载,注册一个账号即可。等待下载完成之后可看到类似于这样一个文件:
JDK-9.0.4安装包.png

- 阅读剩余部分 -

重零开始,捡起我那逝去的梦想

6E271F4F95972187AFB49C95DCFAF4DE (1).png

经过了一年历练,也总算看清了建筑行业的现状。
每天所有的时间都被工作塞得慢慢的,相比起来隔壁IT行业群起抵制的996工作模式,在我们这行看起来简直就是梦寐以求..
施工这一行,并没有什么上下班的说法,只要你人在项目上,就得做好24h随时待命的准备...并且还没有双休日和节假期 泪.png
最关键的是没有自己的时间,睁开眼就是上班,闭着眼就是睡觉,没时间学习新的东西。整个人都是浑浑噩噩的状态,整天不是在和这个班组沟通就是在和那个机械协调。你努力干也是这样,混日子也是这样,没有干劲。

每天过的很累,而且还不开心 不高兴.png

本以为我会在这一行慢慢的成长起来,可是温水煮青蛙的日子,搞的我也慢慢失去了生活的热情,找不到生活的目标,搞不清楚这样下去到底是为了什么?为了高温38°+的天气在外暴晒美名其曰锻炼自己?为了和领导喝酒换取升职不加薪的工作而牺牲自己后半辈子的健康?为了不一定有的车和房去奋斗半辈子当上项目经理,然后把自己的一辈子给彻底绑到工地上?

去你的基建狂魔,我只想过正常人的生活

与其这样沉沦下去,不如下定决心去改变 太开心.png

同样是加班,同样每天都很累,为什么不去做些自己喜欢的事情呢?这样累并快累着,还能学习,还能成长,岂不两开花?

从小到大,自己走的路都是父母安排好的..
上学的时候,父母说你要努力学习,将来考个好大学,以后挣大钱;
考上大学了,父母说你要学土木工程,以后不愁买车买房;
工作了才发现事情并不是那么简单...
父母说的一定是对的,但不一定是最适合自己的。
现在自己也长大了,以后过什么样的生活,是自己选择的结果。

我还年轻,一切都不晚 乖.png

我选择改变,捡起的那逝去的梦想,重零开始!

为了生活,加油!少年!

解决我的笔记本外接显示器发生卡顿丢帧的玄学BUG

新年新气象,过了年我也给自己买了个新显示器 捂嘴笑.png ,在戴尔U2417H和飞利浦241P8QPTKE中犹豫了好久,最终选择了后者,主要还是看中了128%sRGB的广色域和显示器的伸缩摄像头还有自带的usb扩展,对于我来说真的很有用~ 太开心.png
IMG_3668 (1).JPG

买回来接上之后,测试为完美屏 乖.png,打了几盘游戏看了几部电影,感觉很惊艳,总比笔记本的小屏舒适的多,23.8寸的大小刚刚好适合我使用,打游戏很舒服,用来日常工作也绰绰有余,总体体验还是很满意的 太开心.png 太开心.png

但是经过几天的使用,发现了一个很玄学的BUG 汗.png ,该BUG体现在笔记本外接显示器的时候,如果选择笔记本和外接显示器同步显示的复制模式的时候,使用很流畅,但是如果单独的只显示外接显示器而关闭笔记本内屏的时候,会出现卡顿丢帧的BUG,比如窗口过渡动画会明显有卡顿感...很是难受 不高兴.png

重装核显和独显驱动无果,更换HDMI2.0的线也无果,应该是笔记本的BUG,在网上搜索了一波,有少数人也有此问题,但是并没有什么有效的解决办法; 不高兴.png

重启了一下,问题得到暂时的解决,但是如果关机再开始还是这样,日常使用环境我还是习惯晚上关机第二天开机的,如果再重启一下显然不太现实; 泪.png

隐约感觉问题出现在核显驱动上,因为我这个笔记本通过HDMI上外接显示器的时候,视频信号单独从独显输出不经过核显了,遂把核显驱动禁用之,问题得到解决,但是如果把核显禁用了,我的笔记本内屏由于缺少核显驱动就无法黑屏了,也是很难受... 委屈.png

在各种测试中偶然发现,正常开机状态下,如果把核显驱动禁用然后再启用,显示器就恢复正常了,卡顿丢帧的BUG也没了,于是突破口就在重启核显驱动上面,初步构思做一个能够重启核显驱动的BAT不就行了,开机自动运行一下不就ojbk了~! 滑稽.png

经过一番网上搜索,微软的DevCon工具可以做到命令行状态下禁用或启用硬件驱动的效果,但是DevCon.exe在微软的WDK工具包里面,安装WDK工具包动戈几个G的大小就为了这一个文件显然不太合适,最后在博客园中找到立体风的一个文章,该文章可以快速提取win10 1803 WDK的cab包中的DevCon.exe,并且附带有文件和脚本的下载链接,虽然不是最新的1809,不过差别也不大,可以用就行! 小乖.png
也可以直接使用我提取好的文件:devcon.zip
PS:文件提取自win10 1803 WDK,亲测win10 1803/1809/1903可用,解压后将DevCon.exe放置到C:\Windows目录下即可

装上DevCon.exe后就可以开始编写脚本了,在命令行中使用devcon disable "xxxx"devcon enable "xxxx"即可实现重启禁用和启用名称为xxxx的硬件,硬件名称可在计算机→设备管理器→相应的硬件→详细信息→属性→设备实例地址中找到 太开心.png
23232323232 (1).png

最后放上我的代码,保存后文件后缀改为.bat即可双击运行辣~

mode con cols=75 lines=11

@ echo off
echo 正在启用超级管理员权限... 
%1 %2
ver|find "5.">nul&&goto :st
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof

:st
copy "%~0" "%windir%\system32\"
echo 启用超级管理员权限成功 !

@Echo Off&PUSHD %~DP0 &TITLE 正在重启核显驱动
color 0A
devcon /r disable "@PCI\VEN_8086&DEV_3E9B&SUBSYS_18011D72&REV_00\3&11583659&0&10" //禁用核显
devcon /r enable "@PCI\VEN_8086&DEV_3E9B&SUBSYS_18011D72&REV_00\3&11583659&0&10" //启用核显
echo 核显驱动重启完毕,请按任意键退出&pause>nul&exit

运行效果:
QQ截图20190209230918 (1).png

最后将脚本放到win10的开机启动文件夹即可实现啊开机自动启动辣~!

  1. 1
  2. ...
  3. 3
  4. 4
  5. 5
  6. 6