- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
为什么 CharBuffer 中有 isDirect() 方法? 如果 CharBuffer 或 Buffer 中没有任何相应的 (allocateDirect) 方法,我们如何分配直接 CharBu
我有一个输入 ByteArrayOutputStream,需要将其转换为 CharBuffer。 我试图避免创建新字符串。有没有办法做到这一点。 我试图执行以下操作,但我没有字符串的编码,因此下面的代
我在应用程序中使用 CharBuffer 来解码 String。但是当我使用 CharBuffer.toString 时,看起来每当调用 toString 方法时都会创建 String 对象。当我使用
请帮助我理解以下内容: 我使用以下命令创建了一个 CharBufferCharBuffer.wrapped(new char[12], 2, 10) (数组、偏移量、长度) 因此,我希望以 2 的偏移
我是 NIO 类(class)的新手;我正在研究与(可能)非常大的文本文件进行一些模式匹配,到目前为止,我正在通过将其 channel 映射到 byteBuffer 来从文件中读取数据,然后将其转换为
我尝试使用 CharBuffer.put() 函数将一些字符串放入 CharBuffer但缓冲区留空。 我的代码: CharBuffer charBuf = CharBuffer.allocate(1
我无法理解 CharBuffer equals() 方法功能的具体细节。 我不明白这个“独立于他们的起始位置考虑”的短语: Two char buffers are equal if, and onl
有什么理由更喜欢 CharBuffer 到 char[] 在下面: CharBuffer buf = CharBuffer.allocate(DEFAULT_BUFFER_SIZE); while(
为什么以下方法挂起? public void pipe(Reader in, Writer out) { CharBuffer buf = CharBuffer.allocate(DEFAULT
使用 ByteBuffer.asCharBuffer() 可以轻松地将 ByteBuffer 转换为 CharBuffer。 我该如何走向另一个方向?有没有比ByteBuffer Charset.en
我需要使用 CharBuffer 发送一些 StringBuilder sb 内容 我正在寻找类似 CharBuffer.wrap( sb) 的东西,但找不到任何优雅的方式 在解决暴力问题之前,有没有
对我正在尝试做的事情进行一些回填。 我想解析一个String,但是要能够比较,比如 位置 x 处的 1 个字符 位置 x 处有 2 个字符 ... n 个字符在位置 x 失败了 位置 x+1 处的 1
我正在使用以下代码从文件中读取子序列。 FileChannel channel = new RandomAccessFile("abc.txt", "r").getChannel(); ByteBuf
CharBuffer 具有方法 array() 和 hasArray()。 为什么我们需要hasArray()? 在 CharBuffer buf = CharBuffer.allocate(20)
当我运行以下代码时,输出为 abcdefghijklmnopqrstuvwxyz12345678901234。 为什么最后读取的字符串应该只包含 6 个字符(即 567890),但仍将 1234
我只是想避免一些大型数组副本(byte[] 数组)。 I have a String of size n I have a byte[] of size m 我使用 ISO-8859-1 作为字符串。
我正在编写一个 java 代码来搜索大型 txt 文件 (6-8Gb) 中的电子邮件地址和密码。我已经编写了代码,它使用 200Mb txt 文件并给出了输出。但是当我输入一个 500Mb 的文件时,
我在这里有点困惑。 我想做这样的事情: 创建某种可以写入的缓冲区 清除缓冲区 多次使用类似 printf() 的函数,根据一些我只想执行一次的复杂计算将一堆内容附加到缓冲区中 使用缓冲区的内容并将其打
StringBuilder 和 CharBuffer 都实现了 CharSequence 和 Appendable 接口(interface)。声明超接口(interface)时 public i
给定文件 OrangePurpleIndigoPink Why won't the myWay method in the code below give me the content of the
我是一名优秀的程序员,十分优秀!