java高级编程之Collection集合

1.集合的概念:

        集合相当于一个容器,一个存储数据的容器,在未加泛型之前,里面存储的是Object类型的数据,在加入泛型之后,里面存储的数据就要按照参数化类型要求存储。

2.Collection集合常用方法

        

package com.atguigu.java;

import org.junit.Test;

import java.util.Collection;
import java.util.Iterator;

public class Test1 {
    @Test
    public void test(){
        Collection<String> collection = new Collection<String>() {
            @Override
            public int size() {
                return 0;
            }

            @Override
            public boolean isEmpty() {
                return false;
            }

            @Override
            public boolean contains(Object o) {
                return false;
            }

            @Override
            public Iterator<String> iterator() {
                return null;
            }

            @Override
            public Object[] toArray() {
                return new Object[0];
            }

            @Override
            public <T> T[] toArray(T[] a) {
                return null;
            }

            @Override
            public boolean add(String s) {
                return false;
            }

            @Override
            public boolean remove(Object o) {
                return false;
            }

            @Override
            public boolean containsAll(Collection<?> c) {
                return false;
            }

            @Override
            public boolean addAll(Collection<? extends String> c) {
                return false;
            }

            @Override
            public boolean removeAll(Collection<?> c) {
                return false;
            }

            @Override
            public boolean retainAll(Collection<?> c) {
                return false;
            }

            @Override
            public void clear() {

            }
        };
        
        
        
    }
    
}

        注意事项:往Collection集合中添加数据时,要注意该数据所属的类一定要重写equals()方法

2.Collection的子接口

        2.1List接口

                在List接口中存储的数据都是有序,可重复的。

                2.1.1List接口主要的三个实现类:ArrayList(用的最多)、LinkedList、Vector(最古老的集合)

                        三者的异同:

                                                1.同:三者存储的数据都是有序的,可重复的

                                                2.异:ArrayList集合、LinkedList是线程不安全的,效率高,而Vector是线程安全的,效率低。ArrayList的底层是基于数组实现的,而LinkedList的底层是基于链表实现的,对于频繁的插入删除操作,LinkedList的效率比ArrayList的效率要高

package com.atguigu.java;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {


    @Test
    public void test(){
        List<String> list = new ArrayList<>();
        list.add("黄劭鸿");
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // 1.增
//        System.out.println(list);
//      list.add(1,"张三1");
//        System.out.println(list);
        // 2.删
//        System.out.println(list);
//        list.remove(0);
//        System.out.println(list);
        // 3.改
//        System.out.println(list);
//        list.add(0,"黄哥");
//        System.out.println(list);
        // 4.查
//        String s = list.get(0);
//        System.out.println(s);
        // 5.遍历
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);

        }



    }
}

                 2.2 Set接口

                        2.2.1 在Set接口中存储的数据都是无序,不可重复的,注意往Set集合中添加数据时,该数据所属的类都要实现HashCode和equals方法

                        2.2.2 Set接口的实现类

                                        HashSet、LinkedHashSet、TreeSet

3.迭代器方法的使用

        迭代器用来遍历容器中的元素,其主要用到的方法有hasNext和next。其原理如下:

我们用得到的迭代器对象调用hasNext方法,此时该游标位于容器中第一个元素的上面一个位置,我们先判断该游标下面是否有元素,如果有元素则进入循环,然后调用next方法,调用next方法之后,游标下移,并且返回第一个容器对象。由此,第一次迭代完成,周而复始。迭代结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值