Collection方法接口介紹
Collection接口有3種子類型集合:List、Set和Queue,再下面是一些抽象類,最后是具體實(shí)現(xiàn)類,常用的有ArrayList、linkedList、HashSet、linkedHashSet、ArrayBlockingQueue等,下面是Collection的所有方法。
這些方法即可以操作Set集合,也可以操作Queue和List集合,下面分別使用Collection集合接口的方法說明
下面是主要方法的演示:
@Test????@SuppressWarnings("all")????public?void?testCollection()?{????????//?創(chuàng)建Collection接口的實(shí)現(xiàn)????????Collection?collection?=?new?ArrayList<>();????????//?添加元素????????collection.add("嘻嘻");????????String?src?=?"????";????????collection.add(src);????????System.out.println(collection);????????//?創(chuàng)建Collection的實(shí)現(xiàn)????????Collection?coll?=?new?HashSet<>();????????coll.add("?");????????coll.add("?");????????coll.add("?");????????System.out.println(coll);????????//?添加一個(gè)集合數(shù)據(jù)????????collection.addAll(coll);????????//?輸出集合的長度????????System.out.println(collection);????????//?判斷是否包含????????System.out.println(collection.contains("?"));????????//?移除元素????????collection.remove("?");????????//?添加對(duì)象????????collection.add(new?Person("張三",?23,?5000d));????????//?當(dāng)認(rèn)為兩個(gè)對(duì)象屬性一致,相等時(shí)候,需重寫hashCode?和?equals方法????????System.out.println(collection.contains(new?Person("張三",?23,?5000d)));????????System.out.println("-------");????????collection.add(null);????????????Collection?collection1?=?new?ArrayList<>();????????collection1.add("嘻嘻");????????collection1.add("?");????????//?求兩個(gè)集合的交集(只保留collection1存在的元素)????????collection.retainAll(collection1);????????System.out.println(collection);????????//?清空元素????????collection.clear();????????System.out.println(collection);????}
java8新特性操作集合
使用lambda表達(dá)式遍歷集合
java8為Collection的父接口(Iterable)提供了一個(gè)默認(rèn)的Foreach方法,我們可以使用它進(jìn)行集合遍歷
?@Test????public?void?testForeach()?{????????Collection?collection?=?new?ArrayList<>();????????collection.add("i");????????collection.add("love");????????collection.add("china");????????//?foreach遍歷????????collection.forEach(e->?System.out.println(e));????????//?可以使用方法引用簡寫????????collection.forEach(System.out::println);????????//?或者迭代器的forEachRemaining方法???????collection.iterator().forEachRemaining(System.out::println);????}
使用java8的predicate操作集合
?@Test????public?void?testPredicate()?{????????Collection?collection?=?new?ArrayList<>();????????//?添加0-49????????for?(int?i?=?0;?i?<?50;?i++)?{????????????collection.add(i);????????}????????//?移除10-49的數(shù)字????????collection.removeIf(e?->?(e?>?9?&&?e?<?50));????????System.out.println(collection);//?輸出[0,?1,?2,?3,?4,?5,?6,?7,?8,?9]????}
基于流操作集合
java8之后引入了Stream相關(guān)流操作java集合,通過流大大簡化了對(duì)集合操作
@Test
????public?void?testIntStream()?{????????Collection?collection?=?new?ArrayList<>();????????Random?random?=?new?Random();????????for?(int?i?=?0;?i?<?10;?i++)?{????????????collection.add(random.nextInt(100));????????}????????System.out.println(collection);????????//?collection存儲(chǔ)的數(shù)值是包裝類型,可以將其轉(zhuǎn)換為IntStream????????IntStream?intStream?=?collection.stream().mapToInt(e?->?e);????????//?intStream.forEach(System.out::println);????????System.out.println(collection.stream().mapToInt(e?->?e).sum());????????//?輸出最大值????????collection.stream().mapToInt(e?->?e).max().ifPresent(System.out::println);????????//?輸出最小值????????collection.stream().mapToInt(e?->?e).min().ifPresent(System.out::println);????????//?統(tǒng)計(jì)大于50的數(shù)????????System.out.println(collection.stream().filter(e?->?e?>?50).count());????????//?原集合每一個(gè)值加1????????collection.stream().mapToInt(e->?e+1).forEach(System.out::println);????????//?排序????????collection.stream().mapToInt(e->?e).sorted().forEach(System.out::println);????????//?原數(shù)值每一個(gè)元素?cái)U(kuò)大2倍????????int[]?ints?=?collection.stream().mapToInt(e?->?e?<<?1).toArray();????????//?輸出原數(shù)組????????System.out.println(Arrays.toString(ints));????????//?將數(shù)組轉(zhuǎn)流????????IntStream?stream?=?Arrays.stream(ints);????????//?輸出流平均數(shù)????????System.out.println(stream.average().getAsDouble());????}
以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java中collection常用方法詳解”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。