阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

各种数据类型的存储器-集合

101次阅读
没有评论

共计 4610 个字符,预计需要花费 12 分钟才能阅读完成。

1、集合概述

1.1、什么是集合

集合类存放于 java.util 包中。

集合类型主要有 3 种:set(集)、list( 列表)和 map( 映射)。

集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。

简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。

1.2、集合分类

java 集合的所有程序都是保存在 java.util 这个包中,在整个的类集框架中,其核心的接口为:List,Set,Map,Iterable,Collection。

各种数据类型的存储器 - 集合

各种数据类型的存储器 - 集合

2、Collection 基础

2.1、什么是 Collection

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素(Elements)。一些 Collection 允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK 不提供直接继承自 Collection 的类,Java SDK 提供的类都是继承自 Collection 的“子接口”如 List 和 Set。

2.2、Collection 常用方法

int size() 获取元素个数

boolean isEmpty() 是否个数为 0

boolean contains(Object element) 是否包含指定元素

boolean add(E element) 添加元素,成功时返回 true

boolean remove(Object element) 删除元素,成功时返回 true

void clear() 删除所有元素

import java.util.ArrayList; import java.util.Collection; public class CollectionDemo01 {public static void main(String[] args) {// 测试不带 All 的方法 // 创建集合对象 // Collection c = new Collection(); // 错误,因为接口不能实例化 Collection c = new ArrayList(); // boolean add(Object obj): 添加一个元素 // System.out.println("add:"+c.add("hello")); c.add("hello"); c.add("world"); c.add("java"); System.out.println("c:" + c); // boolean remove(Object o): 移除一个元素 c.remove("hello"); System.out.println("remove:" + c); // System.out.println("remove:" + c.remove("javaee")); // boolean contains(Object o):判断集合中是否包含指定的元素 System.out.println("contains:"+c.contains("hello")); System.out.println("contains:"+c.contains("android")); // boolean isEmpty():判断集合是否为空 System.out.println("isEmpty:"+c.isEmpty()); //int size(): 元素的个数 System.out.println("size:"+c.size()); System.out.println("c:" + c); // void clear(): 移除所有元素 c.clear(); System.out.println("c:" + c); } }

3、Collection 操作

3.1、Collection 操作集合

boolean containsAll(Collection<?> c) 是否包含指定集合 c 的全部元素

boolean addAll(Collection<? extends E> c) 添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true

boolean removeAll(Collection<?> c) 删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true

boolean retainAll(Collection<?> c) 保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true

package cn.com.tyschool.demo005; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo02 {public static void main(String[] args) {// 创建集合 1 Collection c1 = new ArrayList(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); c1.add("abc4"); c1.add("abc8"); // 创建集合 2 Collection c2 = new ArrayList(); c2.add("abc1"); c2.add("abc2"); c2.add("abc3"); c2.add("abc4"); c2.add("abc5"); c2.add("abc6"); c2.add("abc7"); // boolean addAll(Collection c): 添加一个集合的元素 System.out.println("addAll:" + c1.addAll(c2)); System.out.println("c1:" + c1); //boolean removeAll(Collection c): 移除一个集合的元素 (是一个还是所有) // 只要有一个元素被移除了,就返回 true。 System.out.println("removeAll:"+c1.removeAll(c2)); System.out.println("c1:" + c1); //boolean containsAll(Collection c):判断集合中是否包含指定的集合元素 (是一个还是所有) // 只有包含所有的元素,才叫包含 System.out.println("containsAll:"+c1.containsAll(c2)); System.out.println("c1:" + c1); //boolean retainAll(Collection c): 两个集合都有的元素? 思考元素去哪了,返回的 boolean 又是什么意思呢? // 假设有两个集合 A,B。 // A 对 B 做交集,最终的结果保存在 A 中,B 不变。 // 返回值表示的是 A 是否发生过改变。 System.out.println("retainAll:"+c1.retainAll(c2)); System.out.println("c1:" + c1); System.out.println("c2:" + c2); } }

3.2、Collection 操作数组

Object[] toArray() 返回一个包含集合中所有元素的数组

<T> T[] toArray(T[] a) 返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型

import java.util.ArrayList; import java.util.Collection; public class CollectionDemo03 {public static void main(String[] args) {// 创建集合对象 Collection c = new ArrayList(); // 添加元素 c.add("hello"); // Object obj = "hello"; 向上转型 c.add("world"); c.add("java"); // 遍历 // Object[] toArray(): 把集合转成数组,可以实现集合的遍历 Object[] objs = c.toArray(); for (int x = 0; x < objs.length; x++) {// System.out.println(objs[x]); // 我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。 // System.out.println(objs[x] + "---" + objs[x].length()); // 上面的实现不了,原因是 Object 中没有 length() 方法 // 我们要想使用字符串的方法,就必须把元素还原成字符串 // 向下转型 String s = (String) objs[x]; System.out.println(s + "---" + s.length()); } } }

4、Collection 遍历

4.1、forEach 方法

使用 Iterable 接口的 forEach 方法,Iterable 是 Collection 的父接口

public class CollectionDemo04 {public static void main(String[] args) {Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; c.forEach(ele -> System.out.println(ele)); } }

4.2、利用专门遍历 Collection 集合的 Iterator 类

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo05 {public static void main(String[] args) {Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; // 将集合转换为迭代器 Iterator<String> it = c.iterator(); // 如果迭代器中还有元素,则返回 true。 while(it.hasNext()) {// 返回迭代器中的下一个元素 String str = it.next() ; if(str.equals("javaweb")) {it.remove();// 删除迭代器新返回的元素 } System.out.println(str); } System.out.println(c); } }

4.3、forEachRemaining 方法

利用专门遍历 Collection 集合的 Iterator 类的 forEachRemaining 方法

import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo06{public static void main(String[] args) {Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; Iterator<String> it = c.iterator() ; it.forEachRemaining(str -> System.out.println(str)); } }

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计4610字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中