[java核心知识] __ 简记java几个常见的集合类

  • 前言

时间不知不觉过了好久了,一直没时间更新关于java的学习进度了,这段时间尝试接触了一些其他东西,兜兜转转.想回来将这个系列好好完成.我们在前面已经对java一些基本的高级特性进行了一些了解.但在学习swing 桌面程序开发的过程中,尝试了使用javafx.进行窗口程序的开发.对它有了一些了解,接下来就接着会到java核心知识的主线上来,看看java的集合类.


  • 集合类

集合类可以看作是一个容器,什么是集合,就是一类事物,如红色的衣服,可以看作一个集合,所有关于java的书,也可以看作是一个集合.对于集合中的各个对象很容易将其存放在集合中.也很容易将其从集合中取出来.还可以按照一定顺序啦进行排放.

Java中提供了不同的集合类.这些类具有不同的存储对象的方式.并提供了相应的方法以方便用户对集合进行遍历,添加,删除以及查找储存对象的方式.并提供了相应的方法以方便用户使用集合.

我将通过本篇文章对java中的各种集合类进行简单的了解和学习.


  • 概述

java.util包中提供了一些集合类,这些集合类又被称之为容器,提到容器我们又会想到数组(数组也可以说是储存数据的一种绝佳的容器).但集合类与数组的不同在于,数组的长度是固定的(一旦当它被创建)
,而集合的长度是可变的.数组用来储存基本数据类型的数据,集合类储存对象的引用.常用的集合有List集合,Set集合,Map集合.其中List与Set继承了Collection接口.各接口还提供了不同的实现类,上述集合类的继承关系:

[java核心知识] __ 简记java几个常见的集合类_第1张图片
image.png

  • Collection接口
    Collection接口是层次结构中的根接口,构成Collection的单位称为元素,Collection接口提供了添加元素,删除元素,管理数据的方法.由于List,Set接口都继承它,所以这些方法对他们也是通用的.
[java核心知识] __ 简记java几个常见的集合类_第2张图片
image.png

那么我们如何遍历一个集合中的元素呢,通常遍历集合都是通过迭代器(Iterator)实现的.Collection接口中的Intertor()方法就是返回在此Collection进行迭代的迭代器.

 Collection list = new ArrayList<>(); // 实例化集合类对象
        list.add("第一个Sting对象");  // 添加元素
        list.add("第二个Sting对象");
        list.add("第三个Sting对象");
        list.add("第四个Sting对象");
        list.add("第五个Sting对象");
        Iterator it = list.iterator();   // 创建迭代器(实例化一个Interator)
        while (it.hasNext()){  // 循环遍历 判断是否由下一个元素.
            System.out.println((String) it.next()); // 获取集合中的元素.并输出.
        }

我们也可以看看Collection接口的结构:

[java核心知识] __ 简记java几个常见的集合类_第3张图片
image.png

  • List集合

List集合包括接口以及接口所有的实现类,List集合中的元素允许重复,各元素的顺序就是对象的插入顺序,类似java数组.用户可通过使用索引来访问集合中的元素.

  • List接口

List接口继承了Collection接口,因此包含Collection中的所有方法,此外,List接口还定义了一下两个非常重要的方法.

  • get(int index)方法获得指定索引位置的元素.

  • set(int index,Object obj) 将集合中的指定索引位置的对象修改为指定的对象.

  • List接口的实现类

List接口的常用实现类有ArrayList 与 LinkedList.

  • ArrayList类实现了可变的数组,允许保存所有元素,包括null.并且可以根据索引位置对集合进行快速的随机访问;缺点就是向指定的索引位置插入对象或删除对象的速度变慢.

  • LinkedList 类采用链表结构保存对象,这种结构的有点就是便于向指定的索引位置插入对象或删除对象.需要向集合中插入,删除对象时,使用LinkList类实现的List集合的效率较高.但对于随机访问集合中的对象.使用LinkedList类实现的List集合的效率较低.

我们在使用的时候通常声明为List类型,可通过不同的实现类来实例化集合.

List list = new ArrayList<>()

其中E可以是任意的java数据类型.

     List arrayList = new ArrayList<>();
     List linkedList = new LinkedList<>();

写个方法来对List方法进行一下学习.

  void Gather(){
        List list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        int i = (int) (Math.random()*list.size());
        System.out.println(list.get(i));

        list.remove(2);
        for (int j=0;j
  • Set集合

Set集合中的对象不按照特定的方式排列,知识简单的将对象加入集合中,但Set集合中不能包含重复对象,Set集合由Set接口和Set接口的实现类组成.Set接口继承了Collection接口,所以也包含它的所有方法.

  • Set集合常用的是实现类有HashSet类与TreeSet类.
    • HashSet类实现Set接口,由哈希表支持,它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变,此类允许使用null元素.
    • TreeSet类不仅实现了Set接口,还实现了java.SortedSet接口.因此,TreeSet类实现的Set集合在遍历集合时,按照自然递增排序.既可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序.
[java核心知识] __ 简记java几个常见的集合类_第4张图片
image.png

[java核心知识] __ 简记java几个常见的集合类_第5张图片
image.png

我们写个小例子练习一下:

   public void method(){
        updatastu updatastu = new updatastu("小李",00001);
        updatastu updatastu1 = new updatastu("小王",00002);
        updatastu updatastu3 = new updatastu("小陈",00003);
        updatastu updatastu4 = new updatastu("小吴",00004);

        TreeSet tree = new TreeSet<>();
        tree.add(updatastu);
        tree.add(updatastu1);
        tree.add(updatastu3);
        tree.add(updatastu4);

        Iterator iterator = tree.iterator(); // Set集合的迭代器.
        System.out.println("遍历输出元素");
        while (iterator.hasNext()){
            updatastu stu = iterator.next();
            System.out.println(stu.getId()+stu.getName());
        }
        iterator = tree.headSet(updatastu1).iterator();
        System.out.println("截取前面部分元素:");
        while(iterator.hasNext()){
            updatastu stu=iterator.next();
            System.out.println(stu.getId()+stu.getName());
        }
        iterator = tree.subSet(updatastu1,updatastu3).iterator();
        System.out.println("截取中间部分");
        while (iterator.hasNext()){
            updatastu stu = iterator.next();
            System.out.println(stu.getId()+stu.getName());
        }
    }

存入TreeSet类实现的Set集合必须实现Comparable接口,该接口中的CompareTo(Object o)方法比较次对象与指定的顺序.如果该对象小于,等于或大于指定对象,则分别返回负整数,0或正整数.

  • Map集合

Map集合没有继承Collection接口,其提供的是key到Value的映射.Map中不能包含相同的key.每个key只能映射一个value.key还决定了存储对象在映射中的存储位置.但不是由key对象本身决定的,而是通过一种散列技术进行处理的.产生一个散列吗的整数值.

  • Map接口

它提供了将key映射到值的对象.一个映射不能包含重复的key每个key最多只能映射到一个值,Map接口中同样提供了集合的常用方法.

[java核心知识] __ 简记java几个常见的集合类_第6张图片
image.png

我们在项目中新建一个Upstu方法来使用一下这几个方法.

void Upstu(){
        HashMap map = new HashMap<>();
        map.put("01","李同学");
        map.put("02","魏同学");
        Set set = map.keySet();
        Iterator it = set.iterator();
        System.out.println("key 中的元素");
        while (it.hasNext()){
            System.out.println(it.next());
        }
        Collection coll = map.values();
        it = coll.iterator();
        System.out.println("values 集合中的所有元素");
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

更新时间:
2019-5-15
11:53

你可能感兴趣的:([java核心知识] __ 简记java几个常见的集合类)