Java学习笔记——集合

目录

一、集合框架

二、Collection

(一)List

(二)Queue

(三)Set

三、Map

(一)HashMap

(二)WeakHashMap

(三)TreeMap

(四)Hashtable

(五)IdentityHashMap

(六)EnumMap


一、集合框架

Java 集合框架主要包括两种类型的容器:

  • 集合(Collection)—— 存储一个元素集合;
  • 图(Map)—— 存储键/值对映射;

下面将对这两种集合框架进行详细地介绍。

二、Collection

:接口  :类

 Collection是一个顶层接口,主要用来定义集合。

而Collection派生出三个子接口,分别是List,Queue,Set

  • List:有序可重复的集合,可直接根据元素的索引来访问
  • Queue:队列
  • Set:无序不可重复的集合,只能根据元素本身来访问

(一)List

Java学习笔记——Collection之List_柠檬不甜会酸的博客-CSDN博客

(二)Queue

Java学习笔记——Collection之Queue_柠檬不甜会酸的博客-CSDN博客

(三)Set

Java学习笔记——Collection之Set_柠檬不甜会酸的博客-CSDN博客

三、Map

 :接口  :类

Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。

Map的实现类方法:

  • HashMap:数组 + 链表 + 红黑树
  • WeakHashMap:是一个弱引用,基于哈希表的Map基础实现
  • TreeMap:红黑树
  • Hashtable:数组
  • IdentityHashMap
  • EnumMap

(一)HashMap

Java学习笔记——Map之HashMap_柠檬不甜会酸的博客-CSDN博客

(二)WeakHashMap

  • WeakHashMap类基于哈希表的Map基础实现,带有弱键;
  • 基于map接口,是一种弱键相连,WeakHashMap里面的键会自动回收;
  • 支持null值和null键;
  • 不允许重复;
  • fast-fail机制;
  • WeakHashMap经常用作缓存

在Java中,引用共分为四种,分别是:强引用、软引用、弱引用和虚引用。

WeakHashMap则是弱引用。

(三)TreeMap

Java学习笔记——Map之TreeMap_柠檬不甜会酸的博客-CSDN博客

(四)Hashtable

  1. 初始容量:Hashtable的默认初始容量大小是11;
  2. 线程安全:线程安全;
  3. HashTable 的元素是头插法;
  4. HashTable:数组 + 链表;
  5. 不允许使用null值和null键;

代码示例 

import java.util.Hashtable;

public class Day35 {
    public static void main(String[] args){
        // 创建hashtable
        Hashtable<String, String> hashtable = new Hashtable<String, String>();

        // 添加
        System.out.println("------put()------");
        hashtable.put("name", "Jack");
        hashtable.put("age", "20");
        hashtable.put("sex", "man");
        hashtable.put("height", "188");
        hashtable.put("weight", "80");
        System.out.println(hashtable);


        // 判断
        if (hashtable.containsKey("name")){
            System.out.println(hashtable.get("name"));
        }

        // 删除
        if (hashtable.containsValue("20")){
            hashtable.remove("age");
            System.out.println(hashtable);
        }

        // 遍历
        for (String key: hashtable.keySet()){
            String value = hashtable.get(key);
            System.out.println("key: " + key + ", value: " + value);
        }
    }
}
{height=188, age=20, name=Jack, sex=man, weight=80}
Jack
{height=188, name=Jack, sex=man, weight=80}
key: height, value: 188
key: name, value: Jack
key: sex, value: man
key: weight, value: 80

(五)IdentityHashMap

  • IdentityHashMap不是一个通用的Map实现,虽然实现了Map接口,但其违反了Map的约定,即比较对象时使用equals方法。
  • IdentityHashMap无序,并且不是线性安全的。

关于其使用equal比较对象这句话,下面简单用几个例子说明。

Map是由key-value构成,若key相同,则不再重复添加。

对于一般的Map实现类来说,即所指对象的值是否相同;

Map<String, String> hashmap = new HashMap<>();
hashmap.put("name", "Jack");
hashmap.put("name", "Marry");
hashmap.put("name", "Tom");
hashmap.put("name", "Jerry");
System.out.println(hashmap);

hashmap.put(new String("name"), "Jack");
hashmap.put(new String("name"), "Marry");
System.out.println(hashmap);
{name=Jerry}
{name=Marry}

 上述例子表明,所添加的元素key均为name,因此不再重复添加。

而IdentityHashMap不是一个通用的Map实现,虽然实现了Map接口,但其违反了Map的约定,即比较对象时使用equals方法,即比较对象是否相同。

Map<String, String> identityHashMap = new IdentityHashMap<>();
identityHashMap.put("name", "Jack");
identityHashMap.put("name", "Marry");
identityHashMap.put("name", "Tom");
identityHashMap.put("name", "Jerry");
System.out.println(identityHashMap);

identityHashMap.put(new String("name"), "Jack");
identityHashMap.put(new String("name"), "Marry");
System.out.println(identityHashMap);
{name=Jerry}
{name=Jerry, name=Jack, name=Marry}

(六)EnumMap

Java学习笔记——枚举_柠檬不甜会酸的博客-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值