⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distinctvalues.java

📁 A framework written in Java for implementing high-level and dynamic languages, compiling them into J
💻 JAVA
字号:
package gnu.xquery.util;import gnu.lists.*;import gnu.mapping.*;import gnu.kawa.util.*;import gnu.xml.*;import gnu.kawa.xml.*;import gnu.math.*;public class DistinctValues{  public static void distinctValues$X (Object values, NamedCollator coll,                                       CallContext ctx)  {    DistinctValuesConsumer out      = new DistinctValuesConsumer(coll, ctx.consumer);    Values.writeValues(values, out);  }  /*  public void apply (CallContext ctx) throws Throwable  {    Object arg = ctx.getNextArg();    Object collation = ctx.getNextArg(null);    ctx.lastArg();    DistinctValuesConsumer out      = new DistinctValuesConsumer(ctx.consumer);    if (collation != null)      {	// FIXME      }    Values.writeValues(arg, out);  }  */}/*class FilterValueConsumer implements Consumer{  Convert convert;  public Consumer append (char v)  {    writeObject(convert.charToObject(v));  }    public void writeBoolean (boolean v)  {    writeObject(convert.booleanToObject(v));  }  public void writeFloat (float v)  {    writeObject(convert.floatToObject(v));  }  public void writeDouble (double v)  {    writeObject(convert.doubleToObject(v));  }  public void writeInt (int v)  {    writeObject(convert.intToObject(v));  }  public void writeLong (long v)  {    writeObject(convert.longToObject(v));  }}*/class DistinctValuesHashTable extends GeneralHashTable{  NamedCollator collator;  public DistinctValuesHashTable (NamedCollator collator)  {    this.collator = collator;  }  public int hash (Object key)  {    if (key == null)      return 0;    if (key instanceof Number        && (key instanceof RealNum || !(key instanceof Numeric)))      {        int hash = Float.floatToIntBits(((Number) key).floatValue());        if (hash == 0x80000000) // Map -0.0 to 0          hash = 0;        return hash;      }    // This mostly-works, but isn't reliable FIXME.    // One problem is that we ignore collation.    return key.hashCode();  }  public boolean matches (Object value1, Object value2)  {    if (value1 == value2)      return true;    if (NumberValue.isNaN(value1) && NumberValue.isNaN(value2))      return true;    return Compare.apply(Compare.LENIENT_EQ, value1, value2, collator);  }}class DistinctValuesConsumer extends FilterConsumer implements PositionConsumer{  DistinctValuesHashTable table;  public DistinctValuesConsumer (NamedCollator collator, Consumer out)  {    super(out);    table = new DistinctValuesHashTable(collator);  }  public void consume(SeqPosition position)  {    writeObject(position);  }  public void writePosition(AbstractSequence seq, int ipos)  {    writeObject(((NodeTree) seq).typedValue(ipos));  }  public void writeBoolean(boolean v)  {    writeObject(v ? Boolean.TRUE : Boolean.FALSE);  }  public void writeObject (Object value)  {    if (value instanceof Values)      {	Values.writeValues(value, this);	return;      }    if (value instanceof KNode)      {        KNode node = (KNode) value;        writeObject(((NodeTree) node.sequence).typedValue(node.ipos));        return;      }    Object old = table.get(value, null);    if (old != null)      return;    table.put(value, value);    base.writeObject(value);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -