Apache容器擴充套件類和常用方法

2021-07-05 14:00:06 字數 2831 閱讀 2831

1. 新單詞:

2. 閉包closure 

業務操作:重寫execute()方法

工具類:collectionutils.foralldo()關聯操作

1) ifclosure.ifclosure(斷言, 業務, 業務) 二選一操作

2) chainedclosure.chainedclosure(業務, 業務) 鏈式操作

3) whileclosure.whileclosure(斷言, 業務, boolean(false是先進行判斷再進行操作,true是先進行操作再進行判斷)) 迴圈操作

3. 交集、差集、並集

1)交集:collectionutils.intersection()

collectionutils.retainall() 

2)差集:collectionutils.subtract()

3)並集:collectionutils.union() 

4)不同元素: collectionutils.disjunction()

public static void main(string args) 

} /*

output:

交集:[2, 3]

差集:[1]

交集:[1, 2, 3, 4]

不同元素:[1, 4]

*/

4. 佇列的擴充套件:

1)迴圈佇列:circularfifoqueue 

2)唯讀佇列: unmodifiablequeue.unmodifiablequeue()

3)斷言佇列:predicatedqueue.predicatedqueue()

public static void main(string args) 

// 迴圈佇列

public static void circularqueue()

// 唯讀佇列

public static void readonlyqueue()

// 斷言佇列

public static void predicatequeue()

5. 迭代器的擴充套件:

1)jdk中map的兩種遍歷方法keyset()和entryset()

2)apache中的迭代器mapiterator和mapiterator()方法

但是這個迭代器要apache中使用

iterablemap的hashedmap(簡單來說iterablemap相當於map;hashedmap相當於hashmap)

3)去重迭代器,相當於過濾器:uniquefilteriterator

4)自定義迭代器:filteriterator + predicate 斷言

5)迴圈迭代器:loopingiterator(注意一下引數和訪問)

public static void main(string args) 

// jdk中map的兩種遍歷方式

public static void testmap()

system.out.println("***************====");

// 第二種 entryset()

set> entry = map.entryset();

iterator> iter2 = entry.iterator();

while (iter2.hasnext())

} // apache中的迭代器

public static void mapit()

} // 去重迭代器

public static void uniqueit()

}// output:a b

// 自定義迭代器

public static void selfit()

};// 關聯

iteratoriter = new filteriterator(list.iterator(), pre);

while (iter.hasnext())

} // 迴圈迭代器

public static void loopingit()

}// output:refer fdss mom refer fdss

6. 雙向(key和value都是唯一的)map--> bidimap

1) inversebidimap()反轉

2)實現類:dualhashmap 無序

dualtreemap 有序

public static void main(string args) 

} /*

output:

途牛-->www.tuniu.com

這裡貌似不是有順序的輸出?

解釋:unicode(新)包——bag 允許重複(可以用來統計單詞的個數)

實現類:

hashbag

無序treebag       有序

public static void main(string args)

// bag的基本用法

public static void testbag() // output:a b }

// 統計單詞個數

public static void wordscount()

// 遍歷

setkeys = bag.uniqueset();// 這裡用set是因為set中儲存的值不能相同

iteratoriter = keys.iterator();

while(iter.hasnext())

}

Object類和Objects類的常用方法

任何子類都充object那裡繼承了equals和tostring 1.object常用方法 tostring和equals,r 2.objects常用方法 equals,此方法的作用同object類的equals 方法的作用一樣,只是此方法可以避免 空指標異常 此方法內部也是基於引數物件的equal...

Qt常用容器類

qt為我們提供了一系列基於模板的容器類,來儲存特定型別的項。這些容器類都是隱式共享的 被用作唯讀容器時,是執行緒安全的。與stl類似,也分為序列式容器和關聯式容器。序列式容器有 qvector qlist qlinklist qstack qqueue。對大部分程式來說qlist都是乙個很好的選擇,...

同步類容器和併發類容器

同步類容器都是執行緒安全的,但是某些場景下可能需要加鎖來保護復合操作。復合類操作如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下乙個元素 以及條件運算。這些復合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodifica...