我无法理解具体细节CharBuffer
equals()
方法发挥作用。
我不明白这个“独立于他们的起始位置考虑”这句话:
两个字符缓冲区相等当且仅当,
它们具有相同的元素类型,
它们具有相同数量的剩余元素,并且
The 剩余元素的两个序列,独立考虑
他们的起始位置, 逐点相等。
我研究了这些很好的例子 -更多例子 https://www.geeksforgeeks.org/charbuffer-equals-method-in-java/,但我不明白这个想法。
任何人都可以用不同的语言和最少的有洞察力的示例代码来解释吗?
我特别觉得这很奇怪:
CharBuffer cb1 = CharBuffer.allocate(10);
cb1.put('a');
cb1.put('b');
//cb1.rewind();
System.out.println(cb1);
CharBuffer cb2 = CharBuffer.allocate(10);
cb2.put(4,'a');
cb2.put(5,'b');
//cb2.rewind();
System.out.println(cb2);
// false, uncommenting rewind() - also false
// but shall be true - "considered independently of starting positions" ?
System.out.println(cb1.equals(cb2));
的两个序列剩余元素, 独立考虑其起始位置, are 逐点相等.
- 只看剩下的元素,
- 不考虑他们从哪里开始,
- 一个缓冲区的每个元素必须等于对应元素在另一个缓冲区中。
在你的例子中,它是逐点相等重要的部分:
0 1 2 3 4 5 6 7 8 9
cb1 = a b 0 0 0 0 0 0 0 0
cb1 = 0 0 0 0 a b 0 0 0 0
正如您所看到的,当逐点比较 char 缓冲区的元素时,它们不匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)