首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止使用Java驱动程序获取数据时Cassandra集合的重新排序

如何防止使用Java驱动程序获取数据时Cassandra集合的重新排序
EN

Stack Overflow用户
提问于 2020-11-10 00:31:22
回答 1查看 51关注 0票数 0

Retrieval using collections描述了集合的顺序。在我的例子中,从set <text>类型返回有序集合的特性就是我所需要的。但是反序列化为java Set和java Set的集合不提供元素顺序将保持的任何保证。因此,查询结果可能不同于java对象。

我尝试使用getSet(),它返回有序集合。我不明白为什么。也许这是由于“LinkedHashSet”的反序列化?

如何保证使用Java驱动程序获得Cassandra文档中指定的排序集合?

EN

回答 1

Stack Overflow用户

发布于 2020-11-10 00:59:29

SetCodec<T>保证

代码语言:javascript
复制
package com.datastax.driver.core;

public abstract class TypeCodec<T> {

...

  /**
   * This codec maps a CQL {@link DataType#set(DataType) set type} to a Java {@link Set}.
   * Implementation note: this codec returns mutable, non thread-safe {@link LinkedHashSet}
   * instances.
   */
  private static class SetCodec<T> extends AbstractCollectionCodec<T, Set<T>> {

    private SetCodec(TypeCodec<T> eltCodec) {
      super(DataType.set(eltCodec.cqlType), TypeTokens.setOf(eltCodec.getJavaType()), eltCodec);
    }

    @Override
    protected Set<T> newInstance(int size) {
      return new LinkedHashSet<T>(size);
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64755486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档