set集合存放不重复的元素,set集合中不存在equal值为ture的元素;hashSet和TreeSet是set接口的常用两个实现类,分别用hash算法和排序二叉树算法来实现;例如,将100以内不重复的随机20个数写入set集合
Set<Interger> hashset=new HashSet<Integer>();
Random r =new Random();
while(hashset.size()<10){
hashset.add(r.nextInt(100));
}
set集合不同于List对象,元素不和下标进行对应,无法从Set集合中取出特定的元素,但是可以遍历整个Set集合,方式是通过iterator遍历方法,返回Iterator遍历对象;
也可以是增强型For循环,在java编译器中是等价的;
例如:
Set<String> strset = new HashSet<String>;
strset.add(“adb”);strset.add(“che”);
增强型for循环
for(String str: strset){
system.out.println(str)
}
迭代器为:
Iterator It =strset.iterator();
while(It.hasNext()){
String str=It.next();
system.out.println(str)
}
HashSet的实现通过Hash表实现的:
添加对象到HashSet的过程:
元素——取出元素的hashcode---通过Hash算法——索引到相应的存储空间;
HashSet的contains方法实现:
参数对象的hashcode值找到相应的存储空间,然后和该空间的对象进行equal比较;
hashCode方法,与equals方法的一致性;一般使用IDE工具生成hashCode算法;
map集合定义了查找表,即所谓的“value””key”映射对,key可以看出value的索引,作为Key的Value在集合中不能重复;
map接口的实现类常用的有hash表实现的HashMap,排序二叉树的TreeMap;
map接口的常用方法有get和set:
Object put(K key, Object value);作用将Key_value映射对写入到Map中,如果集合中已经包含该Key,则返回Key映射的原理的Value值;如果没有则返回null
V get(K key);返回K值映射的value;
Boolean containsKey(Object key);判断map中是否包含Key的索引;
Boolean containsValue(object value);判断map中是否包含value的值;
例如:
创建数组:
String str=”123,321,124,421,125,521”;
String[] arr=str.split(“,”);
创建Map对象
Map<String,integer> map=new HashMap<String,integer>();
统计字符出现的次数:str作为Key,出现次数作为Value;需要遍历字符数组,检查集合中是否包括Key值,来判断出现的次数;
for(i=0;i<arr.length;i++){
if(map.containsValue(arr[i]))
{/**put方法替换,value 值 + 1,key不变*/
map.put(arr[i],map.get(arr[i]) + 1);
}else{
/**初始数值*/
map.add(arr[i],1)
}
原文地址:http://blog.csdn.net/clark_xu/article/details/44258263