ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中的集合

2021-12-05 12:33:57  阅读:147  来源: 互联网

标签:Java list System Collection println 集合 out


集合和数组都是容器。

数组的特点:

  • 数组定义完成并启动后,类型确定、长度固定。
  • 在进行增删数据操作的时候,数组是不太合适的,增删数据都需要放弃原有数组或者移位。

数组适合的场景:

  • 当业务数据的个数是固定的,且都是同一批数据类型的时候,可以采取定义数组存储。

集合是Java中存储对象数据的一种容器。

集合的特点:

  • 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。集合更像气球。
  • 集合非常适合做元素的增删操作。
  • 注意:集合中只能存储引用类型数据,如果要存储基本类型数据可以选用包装类。

集合适合的场景:

  • 数据的个数不确定,需要进行增删元素的时候。

集合类体系结构:

  • Collection:Collection单列集合,每个元素(数据)只包含一个值。
    • List系列集合:添加的元素是有序、可重复、有索引。
      • ArrayList、LinekdList :有序、可重复、有索引。
    • Set系列集合:添加的元素是无序、不重复、无索引。
      • HashSet:无序、不重复、无索引; LinkedHashSet:有序、不重复、无索引。
      • TreeSet:按照大小默认升序排序、不重复、无索引。

  • Map:Map双列集合,每个元素包含两个值(键值对)。

集合对于泛型的支持:

  • 集合都是支持泛型的,可以在编译阶段约束集合只能操作某种数据类型
collection<String> lists = new ArrayList<String>();
Collection<String> lists = new ArrayListi>();// JDK 1.7开始后面的泛型类型申鸱可以省路不写
  • 注意:集合和泛型都只能支持引用数据类型,不支持基本数据类型,所以集合中存储的元素都认为是对象。
  • 如果集合中要存储基本类型的数据使用包装类。

Collection集合常用APl:具体参考官方API文档Java Platform SE 8

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Main {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();

        //1、添加元素,添加成功返回true
        list.add("java");
        list.add("JAVA");
        list.add("MySQL");
        System.out.println(list.add("java")); //true
        System.out.println(list);  //[java, JAVA, MySQL, java]

        //2、清空集合元素
       // list.clear();
        //System.out.println(list);  //[]

        //3、判断集合是否为空,是空返回true,反之返回false
        System.out.println(list.isEmpty());  //false

        //4、获取集合的大小
        System.out.println(list.size());   //  4

        //5、判断集合中是否包含某个元素
        System.out.println(list.contains("java"));  //true
        System.out.println(list.contains("Java"));  //false

        //6、删除某个元素:如果有多个重复元素,默认删除前面的第一个
        System.out.println(list.remove("java"));  //true
        System.out.println(list);  //[JAVA, MySQL, java]
        System.out.println(list.remove("HTML"));  //false
        System.out.println(list);  // [JAVA, MySQL, java]

        //7、把集合转换成数组
        Object[] arr = list.toArray();
        System.out.println("数组"+ Arrays.toString(arr));

        System.out.println("--------------拓展------------");
        Collection<String> c = new ArrayList<>();
        c.add("java");
        c.add("JAVA");
        Collection<String> c1 = new ArrayList<>();
        c1.add("奥");
        c1.add("利");
        c1.add("奥");
        //addAll把c1集合里面的元素全部倒入到c中去
        c.addAll(c1);
        System.out.println(c);   //[java, JAVA, 奥, 利, 奥]
        System.out.println(c1);  //[奥, 利, 奥]
    }
}

Collection集合的遍历方式:

  • 迭代器:
    • 概述:遍历就是一个一个的把容器中的元素访问一遍。
    • 迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。
    • Collection集合获取迭代器

方法名称

说明

Iterator<E> iterator()

返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引

    • lterator中的常用方法

方法名称

说明

boolean hasNext( )

询问当前位置是否有元素存在,存在返回true ,不存在返回false

E next()

获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界。

    • 迭代器的默认位置:
      • lterator<E> iterator():得到迭代器对象,默认指向当前集合的索引0
    • 迭代器取元素越界会出现问题:会出现NoSuchElementException异常。
  • 增强for循环
    • 增强for循环:既可以遍历集合也可以遍历数组。
    • 它是JDK5之后出现的,其内部原理是一个lterator迭代器,遍历集合相当于是迭代器的简化写法。
    • 实现Iterable接口的类才可以使用迭代器和增强for,Collection接口已经实现了lterable接口。
    • 格式:
for(元素数据类型变量名:数组或者Collection集合){
		//在此处使用变量即可,该变量就是元素
}
for( String str : list){
		System.out.println(str);
}
    • 增强for修改变量:修改无意义,不会改变集合或数组中的值。
  • Lambda表达式遍历集合:得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
    • Collection结合Lambda遍历的API

方法名称

说明

default void forEach(Consumer< ? super T> action) :

结合lambda遍历集合

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

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> lists = new ArrayList<>();
        lists.add("奥");
        lists.add("利");
        lists.add("奥");
        System.out.println(lists);  //[奥, 利, 奥]

//        lists.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
                    /*
                     * 奥
                     * 利
                     * 奥
                     */
//            }
//        });

        //Lambda表达式遍历集合
        lists.forEach( s->{
                System.out.println(s);
        /*
         * 奥
         * 利
         * 奥
         */
        });

        //简化形式
//        lists.forEach( s->System.out.println(s));

        //简化形式
//        lists.forEach(System.out::println);

    }
}

集合中存储的是元素对象的地址。

标签:Java,list,System,Collection,println,集合,out
来源: https://blog.csdn.net/m0_47320958/article/details/121727714

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有