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

今天这篇博客是来为大家分享一下我在《疯狂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接口中定义了如下的操作元素集合的方法:

  1. boolean add(object o)添加一个元素到集合中,成功则返回True
  2. boolean addAll(Collection c)把集合c的所有元素添加到前方指定集合中,成功则返回True
  3. void clear()清除集合中的所有元素,将其长度变为o
  4. boolean contains(Object o)返回集合中是否包含指定元素o
  5. boolean containsAll(Collection c)返回集合是否包含指定的集合c中所有元素
  6. boolean isEmpty()返回集合是否为空,若集合长度为0则返回True
  7. Iterator iterator() 返回一个Iterator对象用于遍历集合中的元素
  8. boolean remove(Object o)删除集合中指定元素o,若有多个待删除元素则只删除第一个元素
  9. boolean removeAll(Collection c) 从集合中删除c集合中的所有元素相当于A集合-C集合
  10. boolean retainAll(Collection c)从集合中删除c集合不包含的元素相当于A集合与C集合的交集,方法返回的结果B <= C
  11. int size() 返回集合中元素的个数
  12. 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中方发:

  1. boolean hasNext()判断被迭代的集合是否还有可迭代元素 有则返回True
  2. Object next()返回集合中的下一元素
  3. void remove() 删除集合中上一次next()方法返回的元素
  4. 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干货笔记就写到这里了 故事未完,静待下集。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值