集合(Java)

Posted Michelhjx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合(Java)相关的知识,希望对你有一定的参考价值。

一、概述

        Hello,各位观众老爷,时隔一周小的继续来跟大家分享学习Java知识了。在之前我们一起了解过了集合中的一种ArrayList,没有看过的观众老爷请点击链接先了解一下浅谈集合之ArrayList_Michelhjx的博客-CSDN博客

        现在我们稍微回顾一下集合类的特点 :

                提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。

        这里我们先来看一下集合的体系结构,了解一下集合需要学习哪些东西:

        接下来我们开始逐步学习集合。

 二、Collection

  2.1概述

  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  • JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

        创建Collection集合的对象: 

                多态的方式

                具体的实现类ArrayList

2.2Collection 集合常用方法

具体使用我们有代码演示一下:

public class Test {
    public static void main(String[] args) {
        Collection collection = new ArrayList();
        //添加元素
        collection.add(1);
        collection.add(2);
        collection.add(3);
        System.out.println(collection);
        //删除指定元素
        collection.remove(3);

        //判断集合中是否存在指定的元素
        collection.contains(4);

        //判断集合是否为空
        System.out.println(collection.isEmpty());

        //集合的长度,也就是集合中元素的个数
        System.out.println(collection.size());

        //清空集合中的元素
        collection.clear();
        System.out.println(collection.isEmpty());//用判定是否为空来检验是否清空集合
    }
}

 我们在控制台输出打印:

 这里我们可以看到,在使用了clear()方法后,我们再次判断集合是否为空的时候,这里打印的值是true,因此我们可以检验出clear()方法确实已经清空了集合。

2.3 Iterator迭代器

        什么是迭代器? 这是集合的一种专有的遍历方式。

              常用方法:

                E next():返回迭代中的下一个元素
                boolean hasNext():如果迭代具有更多元素,则返回 true

   具体使用我们用代码演示一下:

public class Test {
    public static void main(String[] args) {
        Collection collection = new ArrayList();

        collection.add(1);
        collection.add(2);
        collection.add(3);

        Iterator iterator = collection.iterator();
        while (iterator.hasNext()){
            System.out.println( iterator.next());
        }

    }
}

控制台输出打印:

2.4List

         概述:有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素,可以存入重复的元素

        特点:    

  •       有序:存储和取出的元素顺序一致
  • 可重复:存储的元素可以重复

        常用方法:

        

    具体使用我们用代码演示一下:

public class Test1 {
    public static void main(String[] args) {
        List list = new ArrayList();

        //循环添加元素
        for (int i = 1; i <5 ; i++) {
            list.add(i);
        }

        //往指定位置添加元素
        list.add(2,6);

        //删除指定索引值的元素
        list.remove(2);

        //修改指定索引值的元素
        list.set(2,6);

        //获得指定索引值的元素
        System.out.println(list.get(2));
        System.out.println("------");

        //遍历集合
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
    }
}

控制台输出;

       

ListIterator列表迭代器(List专用)

        常用方法:

        

  具体使用我们用代码演示一下:

public class Test1 {
    public static void main(String[] args) {
        List list = new ArrayList();
        //循环添加元素
        for (int i = 0; i <5 ; i++) {
            list.add(i);
        }
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            //正序遍历
            System.out.println(listIterator.next());
        }
        System.out.println("----------------");
        while (listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
    }
}

运行结果:

List集合常用实现类:

        ArrayList:

               ArrayList: 底层是数组,查询快,增删慢

        LinkedList

               LinkedList: 底层是链表,查询慢,增删快

2.5 Set

        集合特点:

                        不包含重复的元素

                        没有带索引的方法,所以不能使用普通for循环遍历

        哈希值概念:

                        JDK据对象的地址或者字符串或者数字算出来的int类型的数值

        实现类

                1.HashSet

                        特点:

                                

                 2. TreeSet

                        特点:

                

                    TreeSet排序:

public class Test2 {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<Integer>();
        //自然排序
        treeSet.add(6);
        treeSet.add(5);
        treeSet.add(7);
        treeSet.add(3);
        treeSet.add(1);

        for (Integer integer : treeSet) {
            System.out.println(integer+" ");
        }
        System.out.println("-----------");
        //比较器排序
        TreeSet<Integer> treeSet1 = new TreeSet<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer i1, Integer i2) {
                int num = i1-i2;
                return num;
            }
        });
        treeSet1.add(6);
        treeSet1.add(5);
        treeSet1.add(7);
        treeSet1.add(3);
        treeSet1.add(1);

        for (Integer integer : treeSet1) {
            System.out.println(integer);
        }
    }
}

 运行结果:

三、Map

3.1 定义

        map集合中元素是成对存在的。每个元素由键和值组成。可以通过键找到值,但是键具有唯一性。

 3.2常用方法

         

3.3 Map集合遍历

直接上案例!

public class Test3 {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(1,"张三");
        map.put(2,"李四");
        map.put(3,"王五");
        map.put(4,"赵六");

        //方法一
        //1、通过keySet()方法返回一个键的集合
        //2、遍历这个集合,依次用get()方法获取值
        Set<Integer> integers = map.keySet();
        for (Integer integer : integers) {
            System.out.println(integer+" "+map.get(integer));
        }
        System.out.println("-----------------");
        //方法二
        //1、通过entrySet()方法获取一个键值对对象
        //2、用getKey()和geyValue()方法分别获取值和键
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println(entry.getKey()+" "+entry.getValue());

        }


    }
}

运行结果:

四、Collections工具类

     概述:

                 

      常用方法:        

                

好了,各位观众老爷,今天的分享学习就结束了!ByeBye~

以上是关于集合(Java)的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

Java方法

金蝶handler中 collection 代码片段理解

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]