dasinigetudou

dasinigetudou

V2EX 第 190932 号会员,加入于 2016-09-08 16:25:40 +08:00
根据 dasinigetudou 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
dasinigetudou 最近回复了
2020-12-28 10:15:33 +08:00
回复了 zkywalker 创建的主题 职场话题 有什么提高在工作或生活中与人沟通协作的书籍推荐吗
最近在看《情商》和《看人的艺术》
2020-12-28 10:08:20 +08:00
回复了 jwautumn 创建的主题 职场话题 圣诞节,我裸辞了
加油
2020-11-17 11:51:56 +08:00
回复了 levizheng 创建的主题 Java 大佬们, hashmap 的源码有个不明白的地方求助
```
final TreeNode<K,V> putTreeVal(HashMap<K,V> map, Node<K,V>[] tab,
int h, K k, V v) {
Class<?> kc = null;
boolean searched = false;
TreeNode<K,V> root = (parent != null) ? root() : this;
for (TreeNode<K,V> p = root;;) {
//树的根节点开始遍历
int dir, ph; K pk;
//比较根节点的 hash 值,dir 猜测是决定节点插入时应该插到左子节点还是右子节点
if ((ph = p.hash) > h)
dir = -1;
else if (ph < h)
dir = 1;
else if ((pk = p.key) == k || (k != null && k.equals(pk)))
//如果根节点的 key 和要插入节点的 key 相同,直接返回根节点
return p;
else if ((kc == null &&
(kc = comparableClassFor(k)) == null) ||
(dir = compareComparables(kc, k, pk)) == 0) {
//根节点的 key 和要插入的 key 不同,开始比较根节点的左右子节点
if (!searched) {
TreeNode<K,V> q, ch;
searched = true;
if (((ch = p.left) != null &&
(q = ch.find(h, k, kc)) != null) ||
((ch = p.right) != null &&
(q = ch.find(h, k, kc)) != null))
//找到相同的 key,将节点返回
return q;
}
//这里记录下 dir,可能是决定为了如果从子节点也找不到接下来创建新的节点插入到左边还是右边
dir = tieBreakOrder(k, pk);
}

//到这里就是从红黑树找不到符合要求的节点了,创建新的节点,插入到红黑树
TreeNode<K,V> xp = p;
if ((p = (dir <= 0) ? p.left : p.right) == null) {
Node<K,V> xpn = xp.next;
TreeNode<K,V> x = map.newTreeNode(h, k, v, xpn);
if (dir <= 0)
xp.left = x;
else
xp.right = x;
xp.next = x;
x.parent = x.prev = xp;
if (xpn != null)
((TreeNode<K,V>)xpn).prev = x;
moveRootToFront(tab, balanceInsertion(root, x));
return null;
}
}
}
```
2020-11-17 11:47:06 +08:00
回复了 levizheng 创建的主题 Java 大佬们, hashmap 的源码有个不明白的地方求助
```
final TreeNode<K,V> putTreeVal(HashMap<K,V> map, Node<K,V>[] tab,

​ int h, K k, V v) {

​ Class<?> kc = null;

​ boolean searched = false;

​ TreeNode<K,V> root = (parent != null) ? root() : this;

​ for (TreeNode<K,V> p = root;;) {

​ //树的根节点开始遍历

​ int dir, ph; K pk;

​ //比较根节点的 hash 值,dir 猜测是决定节点插入时应该插到左子节点还是右子节点

​ if ((ph = p.hash) > h)

​ dir = -1;

​ else if (ph < h)

​ dir = 1;

​ else if ((pk = p.key) == k || (k != null && k.equals(pk)))

​ //如果根节点的 key 和要插入节点的 key 相同,直接返回根节点

​ return p;

​ else if ((kc == null &&

​ (kc = comparableClassFor(k)) == null) ||

​ (dir = compareComparables(kc, k, pk)) == 0) {

​ //根节点的 key 和要插入的 key 不同,开始比较根节点的左右子节点

​ if (!searched) {

​ TreeNode<K,V> q, ch;

​ searched = true;

​ if (((ch = p.left) != null &&

​ (q = ch.find(h, k, kc)) != null) ||

​ ((ch = p.right) != null &&

​ (q = ch.find(h, k, kc)) != null))

​ //找到相同的 key,将节点返回

​ return q;

​ }

​ //这里记录下 dir,可能是决定为了如果从子节点也找不到接下来创建新的节点插入到左边还是右边

​ dir = tieBreakOrder(k, pk);

​ }



​ //到这里就是从红黑树找不到符合要求的节点了,创建新的节点,插入到红黑树

​ TreeNode<K,V> xp = p;

​ if ((p = (dir <= 0) ? p.left : p.right) == null) {

​ Node<K,V> xpn = xp.next;

​ TreeNode<K,V> x = map.newTreeNode(h, k, v, xpn);

​ if (dir <= 0)

​ xp.left = x;

​ else

​ xp.right = x;

​ xp.next = x;

​ x.parent = x.prev = xp;

​ if (xpn != null)

​ ((TreeNode<K,V>)xpn).prev = x;

​ moveRootToFront(tab, balanceInsertion(root, x));

​ return null;

​ }

​ }

​ }
```
不知道分析的对不对~希望大佬一起交流
@exmorning 算法要求高吗
上海办公地点在哪里
2020-09-24 14:27:28 +08:00
回复了 corningsun 创建的主题 上海 迫于穷,代拍沪牌,个人非营业额度
借楼摆摊代拍,有需要的加微信 NzA0NDEwNDg2 。
2019-07-02 18:57:49 +08:00
回复了 dasinigetudou 创建的主题 Android AndroidAnnotation 使用方面的疑惑
@saucew 但是跳转还是要跳带后缀的 fragment 啊
2019-07-02 18:57:26 +08:00
回复了 dasinigetudou 创建的主题 Android AndroidAnnotation 使用方面的疑惑
@Cabana AndroidAnnotations 框架
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4043 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 05:25 · PVG 13:25 · LAX 21:25 · JFK 00:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.