java基础:Collection初始与遍历

1.概念

 collection接口是List,Set和Queue的父接口,该接口中定义的方法既可以用来操作Set集合,也可以用来操作List和Queue的集合

2.核心api

*boolean add(Object o) 该方法用于在集合中添加一个元素,如果集合对象被改变了,返回true

*boolean addAll(Collection c) 该方法把集合c的全部元素加载到另外一个集合中,如果集合元素被改变了,返回true

*void clear():清除集合中的所有元素,将集合的长度变为0

*boolean contains(Object o):判断集合中是否包含指定元素

*boolean containsAll(Collection c):返回集合里是否包含集合c的所有元素

*boolean isEmpty() 返回集合是否为空,如果为空返回true

*Iterator iterator(): 返回一个Iterator对象,用于遍历集合中的元素

*boolean remove(Object o) 从集合中删除指定元素

*boolean removeAll(Collection c): 从集合中删除集合c的所有内容

*int size() 集合的长度

*Object[] toArray(): 将集合转换为数组,所有的集合元素变成对应的数组元素

 

3.简单测试

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class demo1 {
    /**
     * Collection接口是List,Set和Queue的父接口,该接口定义的方法可以直接操作三个集合
     * 集合类就像是容器,可以进行添加,删除,清空,判空等
     */
    public static void main(String[] args) {
        //在ArrayList中本来要加上泛型 但是java可以使用自动进行
        //定义了两个集合
        Collection c = new ArrayList();
        Collection book = new HashSet();
        //c.add() 添加元素
        c.add("demo1");
        //c.size() 查看当前容器内的元素数量
        System.out.println("the elem in c is" + " " + c.size());
        //c.remove()移动元素
        c.remove("demo1");
        System.out.println("the elem in c is" + " " + c.size());
        c.add("demo2");
        c.add("demo3");
        //所有的容器中重写了toString方法 可以直接进行输出
        System.out.println("the elem details in c is " + " " + c);
        //进行两个容器之间的交互
        book.add("demo2");
        book.add("demo3");
        book.add("demo4");
        //找到两个容器之间的交集
        //
        System.out.println("the elem details in book is " + " " + book);
        //清除所有元素
        c.clear();
        System.out.println("the elem in c is" + " " + c.size());
    }

}

4.如何进行集合的遍历

4-1:使用Interator进行遍历

//构建迭代器进行遍历
Iterator it=arrayDemo.iterator();

 while(it.hasNext()){
            String arrayDemoElem=(String)it.next();
            System.out.println("iterator->"+arrayDemoElem);
           if(arrayDemoElem.equals("demo3")){
                it.remove();
            }

举个栗子:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.stream.Collector;

public class IteratorElemDemo {
    public static void main(String[]args){
        //建立集合
        Collection arrayDemo=new ArrayList();
        arrayDemo.add("demo1");
        arrayDemo.add("demo2");
        arrayDemo.add("demo3");
        arrayDemo.add("demo4");
        //使用Lambda进行遍历
       // arrayDemo.forEach(obj->System.out.println("元素为"+obj));
        //使用Iterator进行遍历
        Iterator it=arrayDemo.iterator();
        while(it.hasNext()){
            String arrayDemoElem=(String)it.next();
            System.out.println("iterator->"+arrayDemoElem);
           if(arrayDemoElem.equals("demo3")){
                it.remove();
            }
           //在iterator迭代的过程中不能修改集合中的元素 否则会报错
           //arrayDemo.remove("demo3");
        }
        System.out.println(arrayDemo);
    }
}

4-2:使用Lambda进行遍历

arrayDemo.forEach(obj->System.out.println("元素为"+obj));【可以在上述代码中进行测试】

4-3:使用foreach进行遍历(简洁高效)

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Objects;

public class ForEachDemo {
    public static void main(String[]args){
        Collection collections=new ArrayList();
        collections.add("demo01");
        collections.add("demo02");
        collections.add("demo03");
       for(Object obj:collections){
           String collection=(String)obj;
           System.out.println(collection);
       }
        System.out.println(collections);
    }
}

依旧存在两种新的方法进行遍历(Predicate,Stream)

1.Predicate+正则表达式,可以简化遍历的很多操作

 

import java.util.Collection;
import java.util.HashSet;
import java.util.function.Predicate;

public class PredicateTest2 {
    /**
     * 创建books集合
     * */
    public static void main(String[]args){
        Collection nums=new HashSet();
        nums.add(new String("0123456789"));
        nums.add(new String("12345"));
        nums.add(new String("123"));

        //使用Lambda和Predicate实现循环操作
        System.out.println(calAll(nums,ele->((String)ele).contains("012")));
        System.out.println(calAll(nums,ele->((String)ele).length()>8));


    }
    public static int calAll(Collection nums, Predicate p){
        int total=0;
        for(Object obj:nums){
            //判断对象是否满足Predicate的条件
            if(p.test(obj)){
                total++;
            }
        }
        return total;
    }
}

2.Stream操作

Java8新增加了Stream,IntStream,LongStream,DoubleStream等流式api,可以支持多个串行或者并行聚集操作的数据

使用步骤

*使用Stream的builder()创建该Stream对应的Buidler

*调用add方法向流中添加多个元素

*调用build方法()获取对应的Stream

*调用Stream的聚集方法

注:聚集方法分为中端和末端 中端方法可以在保持流不断的情况下进行操作 但是末端操作使用过程后直接会将流断开,所以带末端方法的代码只能够执行一次

import java.util.stream.IntStream;

public class StreamDemo {
    public static void main(String[] args) {
        //提供IntStream方法进行进行流式的
            IntStream is = IntStream.builder()
                    .add(20)
                    .add(13)
                    .add(-2)
                    .add(18)
                    .build();
            //每次只能执行一行 由于在末端操作之后 会自动进行流的消耗 所以只能进行一次操作
            System.out.println("is max:"+is.max().getAsInt());
           // System.out.println("is min"+is.min().getAsInt());
           // System.out.println("is sum:"+is.sum());
            //System.out.println("is average:"+is.average().getAsDouble());
            //求元素平方
//            System.out.println("is all ^2:"+is.allMatch(ele->ele*ele>20));
        
        }
    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值