Java集合和泛型

集合(Collection)

概述

集合是Java中提供的一种容器,用来存储多个数据。

集合继承关系图
ArrayList继承了抽象类AbstractList,同时实现了List接口,List接口继承了Collection接口。
Collection接口为最顶层集合接口
Collection接口的子类:List接口、Set接口
List接口常用的子类有:ArrayList类、LinkedList类
Set接口常用的子类有:HashSet类、LinkedHashSet类

 集合的方法

boolean.add(E e)   添加元素到集合

int size()   返回集合中元素的个数

Object[] toArray()   将集合转成数组

boolean contains(Object o) 判断集合中是否有该元素

void clear()   清空集合

    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<String>();
        collection.add("abc");
        collection.add("a");
        collection.add("b");
        collection.add("c");
        collection.add("c");
        collection.add("abc");   // 集合中可以存储重复元素
        // 返回集合中元素的个数
        System.out.println(collection.size());
        // 转换成数组形式
        Object[] objects = collection.toArray();
        System.out.println(Arrays.toString(objects));
        // 是否包含abc
        System.out.println(collection.contains("abc"));
        // 删除某个元素
        collection.remove("abc");  // 移除第一个为“abc”的元素
        System.out.println(collection);
 
        Collection<String> c = new ArrayList<>();
        c.add("c");
        collection.removeAll(c); // 移除所有为“c”的元素
        System.out.println(collection);
 
        // 清空集合
        collection.clear();
        System.out.println(collection.size());   // 清空后集合元素个数为0
    }

迭代器

迭代器概述

Java提供了很多个集合,这些集合采取的存储方式不同,我们要取这些集合中的元素,可以通过一种通用的获取方式来完成
Collection集合的通用获取方式,在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,然后继续判断,直到集合中的元素全部取出,这种方式就叫迭代
每种集合的底层的数据结构不同,比如ArrayList是数组,LinkedList底层是链表。但无论哪种集合,都会有判断是否有元素及取出元素的动作,所以Java提供了一个迭代器定义了统一判断元素和取元素的方法。

迭代器的实现原理

集合中的迭代器:获取集合中元素的方式

Iterator接口:两个方法

  1. hasNext()   判断集合中是否还有元素,有则返回true
  2. next()  取出集合中下一个元素

 

找Iterator接口的实现类

        Collection定义了一个方法:Iterator iterator();

         以ArrayList为例:

    public static void main(String[] args) {
        Collection<String> collection =  new ArrayList();
        collection.add("a");
        collection.add("b");
        collection.add("c");
        Iterator<String> iterator = collection.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        
        // for循环写法
        // 集合在前面就被取了,集合中元素就就没有了
        for(;iterator.hasNext();){
            System.out.println(iterator.next());
        }
    }

增强for循环

Iterable作用就是实现增强for循环

格式:

for(数据类型 变量名:数组或集合){}
        String[] strArr = {"1","2","a","b"};
        for(String str : strArr){
            System.out.println(str);
        }
 增强for循环的好处和弊端

好处:代码减少,方便对容器的遍历

弊端:没有索引,不能操作容器里面的元素

 List接口

List接口的常用子类

ArrayList

LinkedList

List接口的常用方法
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add(1,"c");
        System.out.println(list);

删除:

        boolean result1 = list.remove("a");
        System.out.println(result1);
        String result2 =  list.remove(0);
        System.out.println(result2);

替换:

        String result3 = list.set(0, "java");
        System.out.println(result3);
        System.out.println(list);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值