Java实现Arrays.asSet()_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java实现Arrays.asSet()

Java实现Arrays.asSet()

 2013/11/16 15:36:15  alleni123  程序员俱乐部  我要评论(0)
  • 摘要:Google查询资料如下:http://stackoverflow.com/questions/3064423/java-easily-convert-array-to-sethttp://tech.puredanger.com/2007/04/05/arraysasset/stackoverflow上提出了这个问题,关于如何将数组转换成Set最佳答案给出的是Set<T>mySet=newHashSet<T>(Arrays.asList(someArray))
  • 标签:实现 Java
Google查询资料如下:
http://stackoverflow.com/questions/3064423/java-easily-convert-array-to-set
http://tech.puredanger.com/2007/04/05/arraysasset/



stackoverflow上提出了这个问题, 关于如何将数组转换成Set
最佳答案给出的是
class="java">Set<T> mySet=new HashSet<T>(Arrays.asList(someArray));


原来list可以作为参数来构建一个Set,
试着运行一下果然可以。
然后参考
代码如下:

public class SetTest2 
{
	public static void main(String[] args)
	{	
		String a="hello";
		String b="world";
		
		Set<String> mySet=asSet(a,b);
		
		System.out.println(mySet);
		
		
	}
	
	
	public static <T>  Set<T> asSet(T... values){
		Set<T> mySet=new HashSet<T>(Arrays.asList(values));
		return mySet;
		
	}
	
	
}


输入结果: [hello, world]

---------------分割线----------------

这里的核心就是HashSet的构造函数
Constructs a new set containing the elements in the specified collection. The HashMap is created with default load factor (0.75) and an initial capacity sufficient to contain the elements in the specified collection.

Parameters:
c the collection whose elements are to be placed into this set


java.util.HashSet.HashSet(Collection<? extends String> c)

这里接受一个实现Collection接口的参数,而Collection后面的泛型则是由用户定义,
由于这里我们定义的是String, 所以这里就成了? extends String,就可以接受String类型了。

(关于Collection:The root interface in the collection hierarchy. 所有的集合的根接口)



这里的疑问就是public static <T>  Set<T> asSet(T... values){
如果没有第一个<T>,便会报错。
错误如下:



在Hibernate源码里面也看到这种代码, 很不理解
因为平时所学过的传统的代码都是例如:
public class BaseDao<T>
public List<T> list(para)
public T load(int id)

不明白static后面的<T>究竟定义了什么。




  • 大小: 33.1 KB
  • 查看图片附件
发表评论
用户名: 匿名