老师,这个静态变量,是一个对象,放到锁里,就表示该类的所有对象在执行多线程时,都会串行执行是吗?
老师,这块代码是一直循环监听端口8888的客户端吗?
老师,同步代码块中的小括号,一般用this就行了吧?不用this.account这样吧
关于为什么不能直接调用list.remove(item)方法,我想了很久,不知道理解的对不对,请老师帮忙看看:
假设,parent和children1(item)对应的内存地址分别为:0x13和0x18,那么调用list.remove方法时,则会干掉0x18,之前学习过Hashmap的底层结构,其实map的Key是存在一个数组里的。当children1有子节点时,它也会出现在该数组中,所以当0x18被干掉时,Key所在的数组也就丢失了指向。所以不能直接调用list.remove(item)
之所以使用brother.addAll(list)后,再使用brother.remove(item)不会丢失children1的子节点,是因为addAll方法,底层是调用了Arrays工具类的copyOf方法,该方法对数组进行扩容,会新开辟一块内存空间进行存储元素,所以不会干掉原来的0x18
这里需要从底层分析,假设,parent和children1,children2对应的内存地址分别为:0X13 和 0X18、0X19那么调用add方法的时候,map<E,list<E>>添加元素的时候 Key是放在数组里的,而list放在node结点里;如果children1或者children2含有子节点时, 0x18或0x19 也会放到key的数组里。 如果remove掉了0x18,那么必然key的数组里的0x18也就删除了,则丢失了而链表addall方法,则是底层调用了Arrays。copyof方法,数组扩容,会重新开辟一块空间进行存储元素,所以在brother链表里做remove操作,不会导致树的子节点丢失
这个是栈吗?也没看到有栈的结构在这里呀?但是老师在讲课的时候一直在说栈,
而且他给我们画的不一直是树的遍历?怎么画栈的内存图?
还是不太理解这个为啥是这样打印的,第一行递归的时候不是应该到4那里停止了吗?
此时的当前结点不是在4吗?再执行第三行的递归,其中结点值为4的右节点不是为空吗?
怎么返回的?
14:30前十几秒,为什么说last是2222,prev传进来也是2222?没弄明白
报空指针异常的那位同学,你是没有对list进行构造器初始化,当然默认为null了
老师,这里面对地址的验证,那个内容限定不能用\\w,\\w表示可以使用字母、数字、下划线,地址不能输入下划线
老师,画红色方框的代码是有什么用?还有PrintWriter是什么?
老师,s读取的是字节流,为什么不直接创建BufferedInputStream缓冲区?
为什么这句不能放在锁内?试了一下放在锁内的话就不能实现这个功能了,但想不懂为什么不能。
老师,上节课单向链表的时候,定义这个next属性,老师并没有在Node后面加<E>,这个不影响把?
老师,
问题一:如果temp是要删除元素的前一个元素,那么为什么不直接temp = getNode(index-1),这样不也是前一个元素吗?用for循环不是增加了时间复杂度吗?
问题二:为什么循环里面要用temp = temp.next?temp.next存的不是要删除元素的那个地址吗?既然要指向下一个元素,不是应该用temp = node.next(node指的是当前要删除元素)?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637