gpt4 book ai didi

java - 具有不同 "element type"(定义不相等)的 CharBuffer 对象是什么?

转载 作者:行者123 更新时间:2023-12-02 01:43:47 26 4
gpt4 key购买 nike

CharBuffer 的 equals() 方法非常棘手。

来自here我发现它对以下 block 进行逐个字符(或逐个元素???)比较:来自(起始)位置(由 position() 返回)包含到 limit() 排除。 两个 CharBuffer 中的 equals() 方法根本不会分析容量以及位置之前和限制之后的任何内容

但是短语“相同元素类型”和“...元素...逐点”击败我。

Two char buffers are equal if, and only if,

They have the same element type,

They have the same number of remaining elements, and

The two sequences of remaining elements, considered independently of their starting positions, are pointwise equal.

我还缺少什么?什么是元素类型? CharBuffer 里面不总是 char 吗?

附注根据实现代码(Java SE8),实际上 equals(obj) 中没有进行(元素)类型检查 - 仅进行标准检查 if (obj instanceof CharBuffer)。所以 API 中的这句话只是为了将来的一些实现或者我不知道什么。或者也许“相同的元素类型”只是意味着 equals(arg) - arg 必须是 CharBuffer,这是微不足道的。

您能否给出两个具有不同“元素类型”的 CharBuffer 对象的示例?

根据定义,此类 CharBuffer 对象并不相等。

CharBuffer cb1 = CharBuffer.allocate(10);
cb1.put('0');
cb1.put('a'); // element type - char ?
cb1.put('b');
cb1.rewind();
cb1.limit(7);
System.out.println(cb1);

CharBuffer cb2 = CharBuffer.allocate(11);
cb2.put("0ab"); // element type - String ?
cb2.rewind();
cb2.limit(7);
System.out.println(cb2);

// 0ab = 0ab + same number of "empty positions" until limit
// (don't know how to name "empty positions" correctly)
System.out.println(cb1.equals(cb2)); // TRUE

最佳答案

不,具有不同元素类型的两个 CharBuffer 实例的示例是不可能的。令人反感的注释并没有错误,但可以从 CharBuffer 的元素类型始终为 char 的事实推断出,它可能被视为多余。

我只能推测,但这个评论可能是为了澄清 ByteBuffer 不能相等,即使它的内容可以被视为 char (通过getChar()putChar()asCharBuffer() 方法)。

关于java - 具有不同 "element type"(定义不相等)的 CharBuffer 对象是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54028514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com