《java疯狂讲义》collections中的工具类部分使用(自用)

package cn.Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Set;

public class MapDemo 
{
	public static void main(String[]__)
	{
		//identityHashMap只有当key是引用的同一个对象的时候,才不会put进去这个Entry组,也就是放宽了这个插入的条件
		IdentityHashMap<String, Integer> map=new IdentityHashMap<>();
		map.put(new String("hhh"),123);
		map.put(new String("hhh"),123);
		map.put("wangwei",123);
		map.put("wangwei",123);
		System.out.println(map);
		//EnumMap在内部使用数组进行保存,所以非常高效,与enumset不同的是,EnumMap中不是使用静态方法来获得一个对象的
		
		EnumMap<Season, Integer> EM=new EnumMap<>(Season.class);
		
		//Map集合的速度:HashMap和Hashtable差不多,但是HashMap还是略胜一筹,TreeMap有的好处就是有序
		
		
		/*
		 * HashSet和HashMap都是使用散列做法来加快查询的速度,在这两个容器的底层,都有一个所谓桶的结构
		 * 桶:通常情况下,一个桶内只能存储一个元素,但是当Hash值重复了之后,而equals判断又不为相等,则这个时候,就会形成链表去维护这个桶内的多个元素
		 * 容量(capacity):hash表中桶的数量
		 * 尺寸(size):记录当前结构中的元素
		 * 负载因子:szie/capacity得到一个目前桶内被填充的容量
		 * 
		 * 
		 * */
		
		//对collections工具类的探查:
		//1.排序操作
		/*
		 * 翻转list集合中元素的顺序:static void reverse(List) ps:list类也就有ArrayList,LinkedList,Vector这三种了
		 * 对于list集合中随机洗牌:static void shuffle(List)
		 * static void sort(List) ps:这里按照的顺序应该是根据compareTo比较得到的?
		 * static void sort(List,comparator)
		 * 
		 * */
		//翻转方法
		List<Integer> lt=new ArrayList<>();
		lt.add(1);
		lt.add(2);
		lt.add(3);
		System.out.println("before: "+lt);
		Collections.reverse(lt);
		System.out.println(" and after: "+lt);
		//随机洗牌
		lt.add(6);
		lt.add(4);
		lt.add(5);
		Collections.shuffle(lt);
		System.out.println(" shuffle : "+lt);//这里这个完全可以用到迷宫那里随机选择数组元素那里,当时还笨笨的用的什么Math.random
		//排序
		List<A> ltA=new ArrayList<>();
		ltA.add(new A(1));
		ltA.add(new A(3));
		ltA.add(new A(2));
		
		System.out.println(ltA);
		//这里无法调用因为排序是需要实现comparable类
		Collections.sort(ltA);
		Comparator<A> cmp=(A a,A b)->
		{
			return a.value-b.value;
		};
		Collections.sort(ltA,cmp);
		System.out.println(ltA);
	}
	
	//同步控制
	List<Integer> list=Collections.synchronizedList(new ArrayList<>());
	Set<Integer>set=Collections.synchronizedSet(new HashSet());
			
}
//定义两个工具类
class A
{
	public Integer value;
	A(Integer a){value=a;}
	@Override
	public String toString() {
		return value+"";
	}
	
}
class B implements Comparable<Integer>
{
	public Integer value;
	B(Integer a){value=a;}
	@Override
	public int compareTo(Integer o) {
		
		return value-o;
	}
	public String toString() {
		return value+"";
	}
}
上一篇:Redis——发布定义、分布式锁


下一篇:Tomcat启动项目,不报错,但是启动不起来(不是启动慢的问题)