DoubleWritable.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.io;
  19. import java.io.DataInput;
  20. import java.io.DataOutput;
  21. import java.io.IOException;
  22. /**
  23.  * Writable for Double values.
  24.  */
  25. public class DoubleWritable implements WritableComparable {
  26.   private double value = 0.0;
  27.   
  28.   public DoubleWritable() {
  29.     
  30.   }
  31.   
  32.   public DoubleWritable(double value) {
  33.     set(value);
  34.   }
  35.   
  36.   public void readFields(DataInput in) throws IOException {
  37.     value = in.readDouble();
  38.   }
  39.   public void write(DataOutput out) throws IOException {
  40.     out.writeDouble(value);
  41.   }
  42.   
  43.   public void set(double value) { this.value = value; }
  44.   
  45.   public double get() { return value; }
  46.   /**
  47.    * Returns true iff <code>o</code> is a DoubleWritable with the same value.
  48.    */
  49.   public boolean equals(Object o) {
  50.     if (!(o instanceof DoubleWritable)) {
  51.       return false;
  52.     }
  53.     DoubleWritable other = (DoubleWritable)o;
  54.     return this.value == other.value;
  55.   }
  56.   
  57.   public int hashCode() {
  58.     return (int)Double.doubleToLongBits(value);
  59.   }
  60.   
  61.   public int compareTo(Object o) {
  62.     DoubleWritable other = (DoubleWritable)o;
  63.     return (value < other.value ? -1 : (value == other.value ? 0 : 1));
  64.   }
  65.   
  66.   public String toString() {
  67.     return Double.toString(value);
  68.   }
  69.   /** A Comparator optimized for DoubleWritable. */ 
  70.   public static class Comparator extends WritableComparator {
  71.     public Comparator() {
  72.       super(DoubleWritable.class);
  73.     }
  74.     public int compare(byte[] b1, int s1, int l1,
  75.                        byte[] b2, int s2, int l2) {
  76.       double thisValue = readDouble(b1, s1);
  77.       double thatValue = readDouble(b2, s2);
  78.       return (thisValue < thatValue ? -1 : (thisValue == thatValue ? 0 : 1));
  79.     }
  80.   }
  81.   static {                                        // register this comparator
  82.     WritableComparator.define(DoubleWritable.class, new Comparator());
  83.   }
  84. }