<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>LinuxSir.cn，穿越时空的Linuxsir! - Java 程序设计开发讨论</title>
    <link>http://linuxsir.cn/forum.php?mod=forumdisplay&amp;fid=88</link>
    <description>Latest 20 threads of Java 程序设计开发讨论</description>
    <copyright>Copyright(C) LinuxSir.cn，穿越时空的Linuxsir!</copyright>
    <generator>Discuz! Board by Comsenz Inc.</generator>
    <lastBuildDate>Tue, 14 Apr 2026 23:18:57 +0000</lastBuildDate>
    <ttl>60</ttl>
    <image>
      <url>http://linuxsir.cn/static/image/common/logo_88_31.gif</url>
      <title>LinuxSir.cn，穿越时空的Linuxsir!</title>
      <link>http://linuxsir.cn/</link>
    </image>
    <item>
      <title>Java 并发 - 为什么需要多线程</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398694</link>
      <description><![CDATA[为什么需要多线程


众所周知，CPU、内存、I/O 设备的速度是有极大差异的，为了合理利用 CPU 的高性能，平衡这三者的速度差异，计算机体系结构、操作系统、编译程序都做出了贡献，主要体现为:
CPU 增加了缓存，以均衡与内存的速度差异；// 导致 可见性问题

操作系统增 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Wed, 27 Dec 2023 09:55:57 +0000</pubDate>
    </item>
    <item>
      <title>Map - WeakHashMap - 具体实现</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398692</link>
      <description><![CDATA[具体实现

WeakHashMap的存储结构类似于Map - HashSet &amp; HashMap 源码解析，这里不再赘述。

关于强弱引用的管理方式，博主将会另开专题单独讲解。

# Weak HashSet?如果你看过前几篇关于 Map 和 Set 的讲解，一定会问: 既然有 WeakHashMap，是否有 WeekHashSet 呢? 答 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Wed, 27 Dec 2023 09:51:52 +0000</pubDate>
    </item>
    <item>
      <title>Map - WeakHashMap - 总体介绍</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398691</link>
      <description><![CDATA[总体介绍

在Java集合框架系列文章的最后，笔者打算介绍一个特殊的成员: WeakHashMap，从名字可以看出它是某种 Map。它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除，即使程序员没有调用remove()或者clear()方法。

更直观的说，当使用 WeakHashMap 时，即 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Wed, 27 Dec 2023 09:49:33 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - TreeSet</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398688</link>
      <description><![CDATA[TreeSet


前面已经说过TreeSet是对TreeMap的简单包装，对TreeSet的函数调用都会转换成合适的TreeMap方法，因此TreeSet的实现非常简单。这里不再赘述。
// TreeSet是对TreeMap的简单包装
public class TreeSet extends AbstractSet
    implements NavigableSet, Clone ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Wed, 27 Dec 2023 09:47:24 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - remove()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398685</link>
      <description><![CDATA[remove()

remove(Object key)的作用是删除key值对应的entry，该方法首先通过上文中提到的getEntry(Object key)方法找到key值对应的entry，然后调用deleteEntry(Entry entry)删除对应的entry。由于删除操作会改变红黑树的结构，有可能破坏红黑树的约束条件，因此有可能 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Wed, 27 Dec 2023 09:46:16 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - put()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398636</link>
      <description><![CDATA[put()


put(K key, V value)方法是将指定的key, value对添加到map里。该方法首先会对map做一次查找，看是否包含该元组，如果已经包含则直接返回，查找过程类似于getEntry()方法；如果没有找到则会在红黑树中插入新的entry，如果插入之后破坏了红黑树的约束条件，还需 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Tue, 26 Dec 2023 09:07:55 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - get()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398635</link>
      <description><![CDATA[get()

get(Object key)方法根据指定的key值返回对应的value，该方法调用了getEntry(Object key)得到相应的entry，然后返回entry.value。因此getEntry()是算法的核心。算法思想是根据key的自然顺序(或者比较器顺序)对二叉查找树进行查找，直到找到满足k.compareTo(p.ke ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Tue, 26 Dec 2023 09:04:16 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - 寻找节点后继</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398634</link>
      <description><![CDATA[# 寻找节点后继

对于一棵二叉查找树，给定节点t，其后继(树中比大于t的最小的那个元素)可以通过如下方式找到:

t的右子树不空，则t的后继是其右子树中最小的那个元素。

t的右孩子为空，则t的后继是其第一个向左走的祖先。


后继节点在红黑树的删除操作中将会用到。
 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Tue, 26 Dec 2023 08:49:15 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - 左旋与右旋</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398633</link>
      <description><![CDATA[预备知识


前文说到当查找树的结构发生改变时，红黑树的约束条件可能被破坏，需要通过调整使得查找树重新满足红黑树的约束条件。调整可以分为两类: 一类是颜色调整，即改变某个节点的颜色；另一类是结构调整，即改变检索树的结构关系。结构调整过程包含两个基本操作** ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Tue, 26 Dec 2023 08:46:52 +0000</pubDate>
    </item>
    <item>
      <title>Map - TreeSet &amp; TreeMap - 总体介绍</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398632</link>
      <description><![CDATA[总体介绍

之所以把TreeSet和TreeMap放在一起讲解，是因为二者在Java里有着相同的实现，前者仅仅是对后者做了一层包装，也就是说TreeSet里面有一个TreeMap(适配器模式)**。因此本文将重点分析TreeMap。

Java TreeMap实现了SortedMap接口，也就是说会按照key的大小顺序 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Tue, 26 Dec 2023 08:41:38 +0000</pubDate>
    </item>
    <item>
      <title>Map - LinkedHashSet&amp;Map - LinkedHashMap经典用法</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398599</link>
      <description><![CDATA[LinkedHashMap经典用法

LinkedHashMap除了可以保证迭代顺序外，还有一个非常有用的用法: 可以轻松实现一个采用了FIFO替换策略的缓存。具体说来，LinkedHashMap有一个子类方法protected boolean removeEldestEntry(Map.Entry eldest)，该方法的作用是告诉Map是否要删除 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Mon, 25 Dec 2023 07:28:10 +0000</pubDate>
    </item>
    <item>
      <title>Map - LinkedHashSet&amp;Map - LinkedHashSet</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398598</link>
      <description><![CDATA[LinkedHashSet


前面已经说过LinkedHashSet是对LinkedHashMap的简单包装，对LinkedHashSet的函数调用都会转换成合适的LinkedHashMap方法，因此LinkedHashSet的实现非常简单，这里不再赘述。
public class LinkedHashSet
    extends HashSet
    implements Set, Clon ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Mon, 25 Dec 2023 07:20:29 +0000</pubDate>
    </item>
    <item>
      <title>Map - LinkedHashSet&amp;Map - 方法剖析 remove()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398597</link>
      <description><![CDATA[remove()

remove(Object key)的作用是删除key值对应的entry，该方法的具体逻辑是在removeEntryForKey(Object key)里实现的。removeEntryForKey()方法会首先找到key值对应的entry，然后删除该entry(修改链表的相应引用)。查找过程跟get()方法类似。

注意，这里的删除 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Mon, 25 Dec 2023 07:18:33 +0000</pubDate>
    </item>
    <item>
      <title>Map - LinkedHashSet&amp;Map - 方法剖析 get() put()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398596</link>
      <description><![CDATA[方法剖析

# get()

get(Object key)方法根据指定的key值返回对应的value。该方法跟HashMap.get()方法的流程几乎完全一样，读者可自行参考前文在新窗口打开，这里不再赘述。

# put()

put(K key, V value)方法是将指定的key, value对添加到map里。该方法首先会对map做 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Mon, 25 Dec 2023 07:15:32 +0000</pubDate>
    </item>
    <item>
      <title>Map - LinkedHashSet&amp;Map - 总体介绍</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398595</link>
      <description><![CDATA[总体介绍

如果你已看过前面关于HashSet和HashMap，以及TreeSet和TreeMap的讲解，一定能够想到本文将要讲解的LinkedHashSet和LinkedHashMap其实也是一回事。LinkedHashSet和LinkedHashMap在Java里也有着相同的实现，前者仅仅是对后者做了一层包装，也就是说LinkedHashS ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Mon, 25 Dec 2023 07:11:32 +0000</pubDate>
    </item>
    <item>
      <title>Map - HashSet &amp; HashMap - get 过程分析</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398564</link>
      <description><![CDATA[get 过程分析


相对于 put 来说，get 真的太简单了。

计算 key 的 hash 值，根据 hash 值找到对应数组下标: hash &amp; (length-1)

判断数组该位置处的元素是否刚好就是我们要找的，如果不是，走第三步

判断该元素类型是否是 TreeNode，如果是，用红黑树的方法取数据， ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Fri, 22 Dec 2023 08:41:59 +0000</pubDate>
    </item>
    <item>
      <title>Map - HashSet &amp; HashMap - 数组扩容</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398563</link>
      <description><![CDATA[数组扩容

resize() 方法用于初始化数组或数组扩容，每次扩容后，容量为原来的 2 倍，并进行数据迁移。

final Node[] resize() {
    Node[] oldTab = table;
    int oldCap = (oldTab == null) ? 0 : oldTab.length;
    int oldThr = threshold;
    int newCap, n ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Fri, 22 Dec 2023 08:39:10 +0000</pubDate>
    </item>
    <item>
      <title>Map - HashSet &amp; HashMap - Java8 HashMap</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398562</link>
      <description><![CDATA[Java8 HashMap

Java8 对 HashMap 进行了一些修改，最大的不同就是利用了红黑树，所以其由 数组+链表+红黑树 组成。

根据 Java7 HashMap 的介绍，我们知道，查找的时候，根据 hash 值我们能够快速定位到数组的具体下标，但是之后的话，需要顺着链表一个个比较下去才能 ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Fri, 22 Dec 2023 08:37:21 +0000</pubDate>
    </item>
    <item>
      <title>Map - HashSet &amp; HashMap - Java7 HashMap get() put() remove()</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398560</link>
      <description><![CDATA[get()

get(Object key)方法根据指定的key值返回对应的value，该方法调用了getEntry(Object key)得到相应的entry，然后返回entry.getValue()。因此getEntry()是算法的核心。 算法思想是首先通过hash()函数得到对应bucket的下标，然后依次遍历冲突链表，通过key.equals(k ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Fri, 22 Dec 2023 08:29:24 +0000</pubDate>
    </item>
    <item>
      <title>Map - HashSet &amp; HashMap - Java7 HashMap 概述</title>
      <link>http://linuxsir.cn/forum.php?mod=viewthread&amp;tid=398559</link>
      <description><![CDATA[Java7 HashMap


# 概述

之所以把HashSet和HashMap放在一起讲解，是因为二者在Java里有着相同的实现，前者仅仅是对后者做了一层包装，也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。

HashMap实现了Map接口，即允许放入key为null的元素， ...]]></description>
      <category>Java 程序设计开发讨论</category>
      <author>xhz</author>
      <pubDate>Fri, 22 Dec 2023 08:03:37 +0000</pubDate>
    </item>
  </channel>
</rss>