001/* 002 * Copyright (c) 2015-2020, Oracle and/or its affiliates. All rights reserved. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package org.tribuo.util.infotheory.impl; 018 019/** 020 * A mutable tuple of a double and a long. 021 */ 022public final class WeightCountTuple { 023 024 /** 025 * The current weight. 026 */ 027 public double weight; 028 /** 029 * The current count. 030 */ 031 public long count; 032 033 /** 034 * Creates a zeroed WeightCountTuple. 035 */ 036 public WeightCountTuple() { 037 this.weight = 0.0; 038 this.count = 0; 039 } 040 041 /** 042 * Creates a WeightCountTuple with the specifed values. 043 * @param weight The current weight. 044 * @param count The current count. 045 */ 046 public WeightCountTuple(double weight, long count) { 047 this.weight = weight; 048 this.count = count; 049 } 050 051 @Override 052 public int hashCode() { 053 int hash = 3; 054 hash = 47 * hash + (int) (Double.doubleToLongBits(this.weight) ^ (Double.doubleToLongBits(this.weight) >>> 32)); 055 hash = 47 * hash + (int) (this.count ^ (this.count >>> 32)); 056 return hash; 057 } 058 059 @Override 060 public boolean equals(Object obj) { 061 if (obj == null) { 062 return false; 063 } 064 if (!(obj instanceof WeightCountTuple)) { 065 return false; 066 } 067 final WeightCountTuple other = (WeightCountTuple) obj; 068 return (this.weight == other.weight) && (this.count == other.count); 069 } 070 071}