JAVA学习笔记- - - day 5

简介: # 集合(重点)## Collection![{9338085D-1CFD-7A5B-85FA-5BBCFAED66DC}](java_8.assets/{9338085D-1CFD-7A5B-85FA-5BBCFAED66DC}.jpg)**Collection中常用的方法**![image-20220519143734065](java_8.assets/image-20220519143734065.png)### 迭代器​ 用来循环遍历出集合中的所有元素​ Iterator<E> iterator()``` Iterat

集合(重点)

Collection

{9338085D-1CFD-7A5B-85FA-5BBCFAED66DC}

Collection中常用的方法

image-20220519143734065

迭代器

   用来循环遍历出集合中的所有元素

    Iterator<E> iterator()

       Iterator iterator = list.iterator();

       while (iterator.hasNext()) {

           System.out.println(iterator.next());

       }

List

ArrayList(重要)

有序数组集合,且允许有重复的元素,使用者可以精确的控制每个元素的插入位置,并且可以快速访问。特点:有序(存储与取出顺序一致),且元素可以重复。

不是线程安全的。没有加锁(synchronized)

LinkedList

LinkedList(底层数据结构属于双链表,查询慢,增删快)

不是线程安全的。

LinkedList是链表为原理,添加、删除的性能高,查询的性能不高

没有加锁(synchronized)

Vector

和ArrayList功能相似,底层也是数组,最主要的区别在于vector是线程安全的,缺点是效率比较低

是线程安全的

有加锁(synchronized)

泛型(重要)

我们在项目中使用集合基本都是存储同一种的数据类型,既然我们在集合中存储同一种数据类型,那我们事先就知道这个集合要存储什么数据类型,我们就能预先的指定要存储的类型

自定义泛型(重要)

语法:

 class/interface 类名/接口名 <T>{

}

T只是泛型的一个标准,使用什么字符都可以,但是都要大写,不要使用特殊字符,建议通T。

Set

HashSet

  特点:

          元素的唯一性

          无序性

          允许存在一个null

          不是线程安全的

唯一性原理:

      对象的hash值和equals都相等,那么就是重复的对象。


LinkedHashSet

说明: 具有可预知迭代顺序的Set接口的哈希表和链表实现,此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序,即按照将元素插入到set中的顺序(插入顺序)进行迭代

    特点:

             元素的唯一性

             有序的

             允许null存在一个

             不是线程安全的

LinkedHashSet和HashSet对比就是多了一个顺序,应用的不多。

TreeSet

           TreeSet可以支持自定义排序,如果TreeSet所存储的对象的类没有实现Comparable接口就会报错ClassCastException。所以我们如果想要使用TreeSet来对自定义的对象来排序,必须实现Comparable接口。

       特点:

            元素唯一性

            可自定义排序

            不允许null存在

            不是线程安全的

  1. 先说比较 : 类如果要比较规则,要实现Comparable接口

工具类

Arrays(数组工具类)

数组的工具类,这里的方法都是静态的

1.对任意数组排序    Arrays.sort(); // 正序

2.数组转成List   Arrays.asList(不定参数)

Map(重点)

map是一个有键值对的集合

List集合

index 0 1 2
Student1 Student2 Student3


Map是一个键值对集合

key 3101 3102 3103
value Student1 Student2 Student3

1.我们可以通过key来获取对应的值,将键值映射到值的对象。

2.一个map的key是不能重复的。

3.键只能有一个空值,值可以有多个空值

4.map也是无序的

Map<K,V> K和V表示泛型,map的k和V可以是任何类型(不能是基本的数据类型)

Map和Collection集合的区别

1.Map集合是键值对的集合,Collection是单一出现的数据集合。

2.Map的键是唯一的,而Collection的子接口中,List集合是可以重复的,set是唯一的。

常用的方法:

    put(key,value): 存数据

    get(key); 根据key获取值

    remove(key): 删除值

    keySet():获取key集合

HashMap(重要)

1.HashMap是map的实现类

2.允许多个null值和一个null键

3.没有顺序

4.不是线程安全的

TreeMap

1.可以按照key来做排序(该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparable进行排序)

2.key不能为null,key不能重复,值可以有多个null

3.不是线程安全的

4.有顺序

Hashtable

1.HashTable是map的实现类

2.不允许有任何的null键和null值

3.是线程安全的

4.无顺序

LinkedHashMap

1.是map的实现类

2.允许一个null键和多个null值

3.是有顺序的(按照添加的顺序)

4.不是线程安全的

相关文章
|
6月前
|
Java 编译器 开发工具
Java基础学习笔记——idea篇
JDK由JRE(包含JVM和核心类库)和开发工具箱(如javac编译器和java运行工具)组成。Java项目结构包括Project、Module、Package和Class。IDEA快捷键包括:生成main方法(main psvm)、复制代码(Ctrl+D)、删除代码(Ctrl+Y/X)、格式化代码(Ctrl+Alt+L)、重命名(Shift+F6)等。
51 0
|
6月前
|
监控 负载均衡 Dubbo
|
3月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
29天前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
31 0
|
29天前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
34 0
|
2月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
53 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
105 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)