集合类均在java.util包之下

集合类方法的功能基本为增、删、改、查,部分外加方法除外(如toArray()、toString()等)

1.List接口

底层为Object 数组,存放的数据可以重复,且数据有序储存、排列

1.1 ArrayList类

继承AbstracList<E>类,是List接口的实现类

1.1.1 声明

根据储存的数据类型可分为泛型和非泛型

(1)非泛型

ArrayList list1 = new ArrayList(); 非泛型即没有固定在集合中的数据类型,可添加任意种类数据类型

ArrayList arrayList = new ArrayList();
arrayList.add("China");
arrayLiat.add(10);
arrayList.add('A');

(2) 泛型

ArrayList<E> list1 = new ArrayList<>(); 泛型即定义集合中只能储存E数据类型的数据

ArrayList<String> arrayList = new ArrayList<>();//jdk1.5及以上等号右侧即可隐式表达数据类型
arrayList.add("Hello");
arrayList.add("World");
//arrayList.add(10); error!!!

(3) 泛型VS非泛型

表面上看,非泛型不仅声明简单而且可以添加多种数据类型,似乎很方便,但是在面对具体需求时则不然,泛型与非泛型的关系就如同杂货店和专卖店一样,各有优势,在一定领域中人们会更倾向于泛型定义

注:后续皆以泛型声明示例

方法

1.1.2增(add)

(1) add(String e)

在集合后顺序添加String类型元素e(创建对象list时泛型为String类型)

(2) add(int index, String element)

在第index个元素后添加String类型的元素element

(3) addAll(Collection<? extends String> c)

将String类型对象名为c的集合中所有元素顺序添加至本集合

ArrayList<String> list = new ArrayList<>();
list.add("Matthew");
list.add("Jason");
list.add("Robert");
ArrayList<String> list1 = new ArrayList<>();
list1.addAll(list);

(4) addAll(int index, Collection<? extends String> c)

将String类型对象名为c的集合中所有元素顺序添加至本集合的第index给元素后

1.1.2 删(remove, clear)

(1) remove(Object o)

Object类为类层级结构的根类,可以认为Object类为所有类的父类

此方法会移除集合中第一个value与o相同的元素

(2) remove(int index)

移除集合中第index个元素

(3) removeAll(Collection<?> c)

从此集合中删除指定集合中包含的所有元素,即原集合与参数集合取交集后取补集

ArrayList<String>() list1 = new ArrayList<>();
list1.add("Hello");
list1.add("World");
ArrayList<String>() list2 = new ArrayList<>();
list2.add("World");
list1.removeAll(list2);

此方法与retainAll(Collection<?> c)刚好相反,retainAll()会留下与c相同的元素,即原集合与参数集合取交集

(4) removeIf(Predicate<? super String> filter)

移除集合中满足条件的所有元素

ArrayList<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(5);
list2.add(10);
list2.add(20);
list2.add(30);
list2.removeIf(temp->temp>=10);//print 1\n2\n5

(5) clear()

清楚集合中的所有元素

list.clear();

1.1.3 改(set)

将集合中的第index个元素用element替换

1.1.4 查(get)

(1) get(int index)

得到集合中第index个元素

(2) getClass()

返回集合所属类

ArrayList list = new ArrayList();
list.getClass();
//printf: class java.util.ArrayList

1.2 LinkedList 类

底层为链表

与ArrayList类所有方法名与用法一致

声明:

LinkedList list = new LinkedList();//M1
LinkedList<E>() list = new LinkedList<>();//M2

1.3 ArrayList VS LinkedList

ArrayList 增删块,查询慢

LinkedList 增删慢,查询快

二者不同的特性使得人们在不同领域有不同的选择

Java集合(类)框架(一)的更多相关文章

  1. Java集合(类)框架(二)

    1.Set集合 1.1 HashSet集合 HashSet底层为哈希码 不是数组,因此没有下标的概念,也就不能根据下标来查询某个元素 存放元素无序,不可重复 1.1.1 声明 Set<Strin ...

  2. Java集合(类)框架(三)

    1. Map集合 相较于List和Set集合而言,Map集合所储存的数据为双列行,数据是以key和value为一个单位进行存储的,如在建立一个学生Map的时候,其中的数据应为 学号-姓名(key-va ...

  3. Java 集合总体框架介绍

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合 ...

  4. Java集合--整体框架

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合 ...

  5. 《Java大学教程》—第17章 Java聚焦类框架

    由所有聚焦类构成,在java.util包中,包含三个重要接口:*    List列表:元素为单个对象,元素在列表中是有序.可重复*    Set集合:元素为单个对象,元素在集合中无序.不可重复*    ...

  6. Java集合整体框架

    Java中的集合类有List.Set.Map Collection的实现类:List.Set List的实现类:ArrayList.LinkedList.Vector Set的实现类:HashSet. ...

  7. Java 集合系列01之 总体框架

      Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set ...

  8. Java集合系列:-----------01集合的整体框架

    内容来自:http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映 ...

  9. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. 64位系统 system32 和 syswow64

    \Windows\SysWOW64  文件夹下存放32位的库和应用程序 (WOW64 == Windows on Windows 64 bit ) \Windows\System32  文件夹下存放6 ...

  2. 073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现

    073 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 05 综合案例-数组移位-主方法功能1和2的实现 本文知识点:综合案例-数组移位-主方法功能1和2的实现 说 ...

  3. 04 C语言基本语法

    C语言的令牌 C 语言的程序代码由各种令牌组成,令牌可以是关键字.标识符.常量.字符串值,或者是一个符号.例如,下方的C语句包括5个令牌: printf("Hello, World! \n& ...

  4. Tensorflow学习笔记No.5

    tf.data卷积神经网络综合应用实例 使用tf.data建立自己的数据集,并使用CNN卷积神经网络实现对卫星图像的二分类问题. 数据下载链接:https://pan.baidu.com/s/141z ...

  5. 计数,dic的创建方式,求九九乘法表

    s1='char,python,nihao,ni,ni,python's=s1.split(',')print(s1)s2=list()for i in s: if i not in s2: s2.a ...

  6. 在Linux下如何根据域名自签发OpenSSL证书与常用证书转换

    在Linux下如何根据域名自签发各种SSL证书,这里我们以Apache.Tomcat.Nginx为例. openssl自签发泛域名(通配符)证书 首先要有openssl工具,如果没有那么使用如下命令安 ...

  7. ORA-00017: session requested to set trace event 请求会话以设置跟踪事件

    ORA-00017: session requested to set trace event   ORA-00017: 请求会话以设置跟踪事件 Cause:       The current se ...

  8. 多测试讲解_009肖sirRF自动化框架安装教程

    robot framework:自动化测试框架 Python3.7 RIDE(可视化界面).  Wxpython  pip(在线下载) . setuptools(在线安装) . 第三方库 第三方库:s ...

  9. 多测师讲解自动化测试 _如何解决验证码的问题_高级讲师肖sir

    自动化测试如何解决验证码的问题对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可 ...

  10. ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南

    ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南 首先安装g++ sudo apt install g++ 检查是否安装成功: 在插件栏安装插件c/c++.code runner: ...