簡體   English   中英

使用 Java 驅動程序獲取數據時如何防止重新排序 Cassandra Set

[英]How to prevent reordering of Cassandra Set when getting data with Java driver

使用集合檢索描述集合順序。 在我的情況下,從set <text>類型返回有序集合的功能是我需要的。 但是將集合反序列化為 java Set和 java Set並不能保證元素的順序會保持不變。 因此,查詢結果可能與 java 對象不同。

我嘗試getSet()並返回有序集合。 我不明白為什么。 也許這是由於“LinkedHashSet”的反序列化?

如何保證使用 Java 驅動程序獲得排序的集合,如 Cassandra 文檔中所述?

SetCodec<T>保證:

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);
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM