java list map 部分笔记

// -------------------------------------------------------------------------------------------------

// 接口
Iterator iterator = null;
//iterator.hasNext();
//iterator.next();
//iterator.remove();

Collection collection = null;
//collection.isEmpty();

// List是一种有序集合 List接口的实现类主要有ArrayList,LinkedList,Vector,Stack等
List list = null;
// 集合中的对象不按照特定的方式排序
Set set = null;

// 实现 HashSet和TreeSet继承AbstractSet 实现Set.
//  HashSet类按照哈希算法来存取集合中的对象,具有很好的存取性能。
//  当HashSet向集合中加入一个对象时,会调用对象的hashCode()方法获取哈希码,然后根据这个哈希码进一步计算出对象在集合中的存放位置。
// 实际上是一个HashMap实例. 继承Set. 集合中的对象不按照特定的方式排序.
HashSet hashSet = null;
// TreeSet实现了SortedSet接口,可以对集合中的元素排序。
TreeSet treeSet = null;

// ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。
// 但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
//  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。
//  这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。
//  当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
// 默认数组大小为10, 主要方法 add set get iterator
// 每次扩容是原来的1。5倍,当不够存储时,进行扩容。Arrays.copyOf(elementData, size,class)
ArrayList arrayList = new ArrayList();

// Collections.sort(List list):对List的元素进行自然排序
// Collections.sort(List list, Comparator comparator):对List中的元素进行客户化排序
// 默认按ASCII码排序
Collections.sort(arrayList);

// LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。
// 这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
// 注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。
// 一种解决方法是在创建List时构造一个同步的List:List list = Collections.synchronizedList(new LinkedList(...));
LinkedList linkedList =  null;

// treemap 和 trppset 比较
TreeMap treeMap = null;
TreeSet treeSet1 = null;
// 与HashSet完全类似,TreeSet里面绝大部分方法都市直接调用TreeMap方法来实现的。

// 相同点:
// TreeMap和TreeSet都是有序的集合,也就是说他们存储的值都是拍好序的。
// TreeMap和TreeSet都是非同步集合,因此他们不能在多线程之间共享,不过可以使用方法Collections.synchroinzedMap()来实现同步
// 运行速度都要比Hash集合慢,他们内部对元素的操作时间复杂度为O(logN),而HashMap/HashSet则为O(1)。
// 不同点:
// 最主要的区别就是TreeSet和TreeMap非别实现Set和Map接口
// TreeSet只存储一个对象,而TreeMap存储两个对象Key和Value(仅仅key对象有序)
// TreeSet中不能有重复对象,而TreeMap中可以存在

 

Map map5 = null;
ConcurrentHashMap map = new ConcurrentHashMap(16, 0.75F);
map.forEach( (k, v) -> {
    System.out.println(k + "-" + v);
} );

HashMap hashMap = new HashMap();
int hashcode = hashMap.hashCode();
hashMap.forEach((k, v) -> {
    System.out.println(k + "-" + v);
});

Hashtable hashtable = null;
System.out.println(1 << 30);

// 数据n是否幂等
int n = 257;
if((n & (n-1)) == 0) {
    System.out.println("is m");
} else {
    System.out.println("is not m");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章