Performs an xor on an array of Booleans. : boolean « Data Type « Java






Performs an xor on an array of Booleans.

     
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * <p>Operations on boolean primitives and Boolean objects.</p>
 *
 * <p>This class tries to handle <code>null</code> input gracefully.
 * An exception will not be thrown for a <code>null</code> input.
 * Each method documents its behaviour in more detail.</p>
 * 
 * @author Stephen Colebourne
 * @author Matthew Hawthorne
 * @author Gary Gregory
 * @since 2.0
 * @version $Id: BooleanUtils.java 589050 2007-10-27 05:07:45Z bayard $
 */
public class Main {
  /**
   * <p>Performs an xor on a set of booleans.</p>
   *
   * <pre>
   *   BooleanUtils.xor(new boolean[] { true, true })   = false
   *   BooleanUtils.xor(new boolean[] { false, false }) = false
   *   BooleanUtils.xor(new boolean[] { true, false })  = true
   * </pre>
   *
   * @param array  an array of <code>boolean<code>s
   * @return <code>true</code> if the xor is successful.
   * @throws IllegalArgumentException if <code>array</code> is <code>null</code>
   * @throws IllegalArgumentException if <code>array</code> is empty.
   */
  public static boolean xor(boolean[] array) {
      // Validates input
      if (array == null) {
          throw new IllegalArgumentException("The Array must not be null");
      } else if (array.length == 0) {
          throw new IllegalArgumentException("Array is empty");
      }

      // Loops through array, comparing each item
      int trueCount = 0;
      for (int i = 0; i < array.length; i++) {
          // If item is true, and trueCount is < 1, increments count
          // Else, xor fails
          if (array[i]) {
              if (trueCount < 1) {
                  trueCount++;
              } else {
                  return false;
              }
          }
      }

      // Returns true if there was exactly 1 true item
      return trueCount == 1;
  }
  /**
   * <p>Performs an xor on an array of Booleans.</p>
   * 
   * <pre>
   *   BooleanUtils.xor(new Boolean[] { Boolean.TRUE, Boolean.TRUE })   = Boolean.FALSE
   *   BooleanUtils.xor(new Boolean[] { Boolean.FALSE, Boolean.FALSE }) = Boolean.FALSE
   *   BooleanUtils.xor(new Boolean[] { Boolean.TRUE, Boolean.FALSE })  = Boolean.TRUE
   * </pre>
   *
   * @param array  an array of <code>Boolean<code>s
   * @return <code>true</code> if the xor is successful.
   * @throws IllegalArgumentException if <code>array</code> is <code>null</code>
   * @throws IllegalArgumentException if <code>array</code> is empty.
   * @throws IllegalArgumentException if <code>array</code> contains a <code>null</code>
   */
  public static Boolean xor(Boolean[] array) {
      if (array == null) {
          throw new IllegalArgumentException("The Array must not be null");
      } else if (array.length == 0) {
          throw new IllegalArgumentException("Array is empty");
      }
      boolean[] primitive = null;
      try {
          primitive = toPrimitive(array);
      } catch (NullPointerException ex) {
          throw new IllegalArgumentException("The array must not contain any null elements");
      }
      return xor(primitive) ? Boolean.TRUE : Boolean.FALSE;
  }
  /**
   * <p>Converts an array of object Booleans to primitives.</p>
   *
   * <p>This method returns <code>null</code> for a <code>null</code> input array.</p>
   * 
   * @param array  a <code>Boolean</code> array, may be <code>null</code>
   * @return a <code>boolean</code> array, <code>null</code> if null array input
   * @throws NullPointerException if array content is <code>null</code>
   */
  public static boolean[] toPrimitive(Boolean[] array) {
      if (array == null) {
          return null;
      } else if (array.length == 0) {
          return new boolean[0];
      }
      final boolean[] result = new boolean[array.length];
      for (int i = 0; i < array.length; i++) {
          result[i] = array[i].booleanValue();
      }
      return result;
  }
}

   
    
    
    
    
  








Related examples in the same category

1.Boolean Data Type
2.Boolean class creates primitives that wrap themselves around data items of the boolean data type
3.Looping Forever with true value
4.Boolean And Or
5.Convert String to Boolean
6.Convert Boolean to String
7.Java boolean value
8.Use toString method of Boolean class to convert it into String
9.Convert Java boolean Primitive to Boolean object
10.Convert Java String Object to Boolean Object
11.Compare Two Java boolean Arrays Example
12.Create an Boolean object from boolean value
13.Convert integer to boolean
14.Convert boolean to integer
15.Convert boolean value to Boolean
16.Create a boolean variable from string
17.Autoboxing/unboxing a Boolean and Character.
18.Converts a Boolean to a String returning 'on', 'off', or null.
19.Converts a Boolean to a String returning 'true', 'false', or null
20.Converts a Boolean to a String returning one of the input Strings.
21.Converts a Boolean to a String returning 'yes', 'no', or null
22.Converts a Boolean to a boolean handling null
23.Converts a Boolean to a boolean handling null by returning false
24.Converts a Boolean to an Integer specifying the conversion values.
25.Converts a Boolean to an int specifying the conversion values.
26.Converts a Boolean to a Integer using the convention that zero is false
27.Converts a String to a Boolean throwing an exception if no match.
28.Converts a String to a Boolean.
29.Converts a String to a boolean (optimised for performance).
30.Converts a String to a Boolean throwing an exception if no match found.
31.Converts an Integer to a Boolean specifying the conversion values.
32.Converts an Integer to a Boolean using the convention that zero is false
33.Converts a boolean to a String returning 'on' or 'off'
34.Converts a boolean to a String returning 'true' or 'false'
35.Converts a boolean to an Integer using the convention that zero is false
36.Converts a boolean to an int using the convention that zero is false
37.Converts a boolean to a String returning 'yes' or 'no'
38.Performs an xor on a set of booleans.
39.Checks if a Boolean value is false, handling null by returning false
40.Checks if a Boolean value is not false, handling null by returning true
41.Checks if a Boolean value is not true, handling null by returning true
42.Checks if a Boolean value is true, handling null by returning false
43.Boolean factory that avoids creating new Boolean objecs all the time.
44.Converting a string to a boolean
45.Boolean Util