首页 > 编程 > Java > 正文

旋涡JAVA笔记--集合的前世今生1 —— 如人饮水

2019-11-06 07:04:20
字体:
来源:转载
供稿:网友

今天这篇博客是来为大家分享一下我在《疯狂java讲义》中学习到的集合知识

java集合类是一种十分有用的类,用于存放数量不等的对象,并可以实现常用的数据结构。java集合大致分为set map list queue。set是一种无序的并且元素不可重复的集合(若重复数据 则只有一个有效数据存在),List代表的是有序并且元素可以重复的集合,Map则代表具有一定映射关系的集合,java5又包含Queue体系集合,代表的是队列集合实现。

java集合类主要由两个接口派生而成Collection接口和Map接口,这两种接口是JAVA集合框架的根接口

这里写图片描述

注:Collection是根接口 矩形框的子接口为常用的集合类

这里写图片描述

注:Map是根接口 矩形框的子接口为常用的集合类

set集合似一个罐子,把一个对象添加到set集合中,set集合无法记住这个元素的添加顺序,所以不允许重复,List集合像一个数组,但其长度可以改变,并且可以记住每次添加元素的顺序。Map也像一个罐子,但是其每条数据都是由Key,Value键值对组成的。

Collection接口中定义了如下的操作元素集合的方法:

boolean add(object o)添加一个元素到集合中,成功则返回Trueboolean addAll(Collection c)把集合c的所有元素添加到前方指定集合中,成功则返回Truevoid clear()清除集合中的所有元素,将其长度变为oboolean contains(Object o)返回集合中是否包含指定元素oboolean containsAll(Collection c)返回集合是否包含指定的集合c中所有元素boolean isEmpty()返回集合是否为空,若集合长度为0则返回TrueIterator iterator() 返回一个Iterator对象用于遍历集合中的元素boolean remove(Object o)删除集合中指定元素o,若有多个待删除元素则只删除第一个元素boolean removeAll(Collection c) 从集合中删除c集合中的所有元素相当于A集合-C集合boolean retainAll(Collection c)从集合中删除c集合不包含的元素相当于A集合与C集合的交集,方法返回的结果B <= Cint size() 返回集合中元素的个数Object[] toArray()集合转换为一个数组,集合元素转变为数组元素

接下来上代码

public class CollectionTest { public static void main(String[] args) { //list 清单是一个有序的元素可重复的集合 Collection c = new ArrayList(); //添加元素 c.add("孙悟空"); //集合中不能存放基本类型 但Java支持自动装箱成为其包装类 此中的6位Integer类 c.add(6); //c.size() 输出元素的个数 返回值int System.out.PRintln("c集合的元素个数为:" + c.size()); //删除指定元素 c.remove(6); System.out.println("c集合的元素个数为:" + c.size()); //判断是否包含指定字符串 返回Boolean System.out.println("c集合是否包含孙悟空这个字符串" + c.contains("孙悟空")); c.add("轻量级JAVA EE "); System.out.println("c集合元素" + c); //set中的元素不可重复 就像一个罐子且不知道元素的顺序 Collection books = new HashSet(); books.add("HELLO WORLD"); books.add("I love you"); System.out.println("c集合是否包含books集合?" + c.contains(books)); //删除c集合中所有元素 c.clear(); System.out.println("c集合中所有元素" + c); }}

**运行结果为: c集合的元素个数为:2 c集合的元素个数为:1 c集合是否包含孙悟空这个字符串true c集合元素[孙悟空, 轻量级JAVA EE ] c集合是否包含books集合?false c集合中所有元素[] ** 注:上段代码中出现了Hashset,和ArrayList,虽然二者的实现类不同,但是当成collection使用的时候,可以使用Collection所提供的所有增删等方法.并且collection接口重写了toString方法 个能一次性的输出元素以数组的形式。

使用Lambda表达式遍历集合:

public class CollectionEach { public static void main(String[] args) { //创建一个set集合 输出的结果不一定是按照add方法添加的顺序,因为set集合是无序的 Collection books = new HashSet(); books.add("轻量级 JAVA ee 企业应用实战"); books.add("疯狂JAVA讲义"); books.add("疯狂安卓讲义"); //调用forEach方法遍历 并且使用Lambda表达式 books.forEach(obj -> System.out.println("迭代集合元素" + obj)); }}

**运行结果为: 迭代集合元素疯狂JAVA讲义 迭代集合元素疯狂安卓讲义 迭代集合元素轻量级 JAVA ee 企业应用实战**

使用Iterator遍历集合元素:

Itertor接口中定义了如下4中方发:

boolean hasNext()判断被迭代的集合是否还有可迭代元素 有则返回TrueObject next()返回集合中的下一元素void remove() 删除集合中上一次next()方法返回的元素void forEachRemainin(Consumer action)可以用Lambda表达式来遍历集合元素public class InteratorEach { public static void main(String[] args) { Collection collection = new HashSet(); collection.add("ABC1"); collection.add("ABC2"); collection.add("ABC3"); //获取collection集合的迭代器 Iterator it = collection.iterator(); //采用Lambda方式进行迭代 it.forEachRemaining(obj -> System.out.println("Lambda迭代元素" + obj)); }}

**运行结果为: Lambda迭代元素ABC1 Lambda迭代元素ABC2 Lambda迭代元素ABC3**

注:Iterator本身并不提供盛装对象的能力,必须有一个被迭代对象像如上代码块中的collection.iterator()则返回一个Iterator,且用Iterator遍历Collection集合元素时,元素在集合中不可更改,不可变

public class IteratorTest { public static void main(String[] args) { //创建一个集合 Collection books = new HashSet(); books.add("疯狂JAVA讲义"); books.add("疯狂安卓讲义"); books.add("轻量级 JAVA ee 企业应用实战"); //获取books集合的迭代器 Iterator it = books.iterator(); while(it.hasNext()){ //it 。 next()方法返回的是object数据类型 需要强制转换 String book = (String) it.next(); System.out.println(book); if (book.equals("疯狂安卓讲义")){ //从集合中删除上一次next()方法反悔的元素 it.remove(); } //对book变量赋值 不会改变集合元素本身 book = "12456"; System.out.println(book); } }}

**运行结果为: 疯狂JAVA讲义 12456 疯狂安卓讲义 12456 轻量级 JAVA ee 企业应用实战 12456**

感谢大家捧场 今天的Java干货笔记就写到这里了 故事未完,静待下集。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表