Java tutorial
//package com.java2s; /* * 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. */ import java.util.Collections; import java.util.HashSet; import java.util.Set; public class Main { /** * Returns a minimal Set containing the elements passed in. There is no guarantee that the * returned set is mutable or immutable. * @param <T> * @param a The elements to add to the Set * @return A set containing the elements passed in. * @see #asUnmodifiableSet */ public static <T> Set<T> asSet(T... a) { return _asSet(a, false); } private static <T> Set<T> _asSet(T[] a, boolean makeImmutable) { int count = (a != null) ? a.length : 0; Set<T> outSet; if (count == 0) { outSet = Collections.emptySet(); } else { if (count == 1) { outSet = Collections.singleton(a[0]); } else { // make the initial size big enough that we don't have to rehash to fit the array, for // the .75 load factor we pass in int initialSize = (int) Math.ceil(count / .75d); outSet = new HashSet<T>(initialSize, .75f); for (int i = 0; i < count; i++) { outSet.add(a[i]); } if (makeImmutable) { outSet = Collections.unmodifiableSet(outSet); } } } return outSet; } }