JAVA part 12 集合

JAVA part 12 集合

Set集合的特点

Set:
一个不包含重复元素的collection
HashSet:
它不保证set的迭代顺序;特别是他不保证该顺序恒久不变

代码:

package Day_12;

import java.util.HashSet;
import java.util.Set;

public class test1 {
    public static void main(String[] args) {

        //创建集合对象
        Set<String> s = new HashSet<String>();

        //添加元素
        s.add("hello");
        s.add("world");
        s.add("java");

        //唯一
        s.add("world");

        //遍历循环
        for(String x : s){
            System.out.println(x);
        }
    }
}

HashSet保证元素唯一性的原理

通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据判断的。
这个判断过程是:
首先进行比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。如果哈希值不同,就直接添加到集合中;如果哈希值相同,继续执行equals()进行比较:返回的是true,说明元素重复,不添加;返回的是false,说明元素不重复,就添加

如果使用HashSet集合存储对象想保证元素的唯一性,就必须重写hashCode()和equals()方法

代码:

package Day_12;

import java.util.HashSet;

public class test2 {
    public static void main(String[] args) {
        
        //创建集合对象
        HashSet<String> hs = new HashSet<String>();
        
        //添加元素
        hs.add("hello");
        hs.add("world");
        hs.add("java");
        hs.add("world");
        
        //遍历集合
        for(String s : hs){
            System.out.println(s);
        }
    }
}

Map集合

将键映射到值的对象,一个映射不能包括重复的键:每个键最多有一个值

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test3 {
    public static void main(String[] args) {
        
        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();
        
        //添加元素
        //put(K key, V value):添加对象
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");
        
        //输出集合对象
        System.out.println(map);
    }
}

Map集合的成员方法

1.V put(K key, V value):添加元素
2.V remove(Object key):根据键删除键值对元素
3.void clear():清空所有键值对元素
4.boolean containsKey(Object key):判断集合是否包含指定的键
5.boolean containsValue(Object value):判断集合是否包含指定的值
6.boolean isEmpty():判断集合是否为空
7.int size():返回集合中的键值对对数

V put(K key, V value):添加元素

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //V put(K key, V value):添加元素
        System.out.println("put:"+map.put("001", "成龙"));
        System.out.println("put:"+map.put("001", "李连杰"));

        //输出集合对象
        System.out.println(map);
        /*
        put:null
        put:成龙
        {001=李连杰}
        */
    }
}

V remove(Object key):根据键删除键值对元素

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //V remove(Object key):根据键删除键值对元素
        System.out.println("remove:"+map.remove("001"));
        System.out.println("remove:"+map.remove("004"));

        //输出集合对象
        System.out.println(map);
        /*
        remove:成龙
        remove:null
        {002=李连杰, 003=刘德华}
        */
    }
}

void clear():清空所有键值对元素

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //void clear():清空所有键值对元素
        map.clear();

        //输出集合对象
        System.out.println(map);
        /*
        {}
        */
    }
}

boolean containsKey(Object key):判断集合是否包含指定的键

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean containsKey(Object key):判断集合是否包含指定的键
        System.out.println("containsKey:"+map.containsKey("001"));
        System.out.println("containsKey:"+map.containsKey("004"));

        //输出集合对象
        System.out.println(map);
        /*
        containsKey:true
        containsKey:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

boolean containsValue(Object value):判断集合是否包含指定的值

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean containsValue(Object value):判断集合是否包含指定的值
        System.out.println("containsValue:"+map.containsValue("成龙"));
        System.out.println("containsValue:"+map.containsValue("周星驰"));

        //输出集合对象
        System.out.println(map);
        /*
        containsValue:true
        containsValue:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

boolean isEmpty():判断集合是否为空

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean isEmpty():判断集合是否为空
        System.out.println("isEmpty:"+map.isEmpty());

        //输出集合对象
        System.out.println(map);
        /*
        isEmpty:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

int size():返回集合中的键值对对数

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //int size():返回集合中的键值对对数
        System.out.println("size:"+map.size());

        //输出集合对象
        System.out.println(map);
        /*
        size:3
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Map集合的获取

1.V get(Object key):根据键获取值
2.Set< K > key Set():获取所有键的集合
3.Collection< V > values():获取所有值的集合

V get(Object key):根据键获取值

package Day_12;

import java.util.HashMap;
import java.util.Map;

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //V get(Object key):根据键获取值
        System.out.println("get:"+map.get("001"));
        System.out.println("get:"+map.get("004"));

        System.out.println(map);
        /*
        get:成龙
        get:null
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Set< K > key Set():获取所有键的集合

package Day_12;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //Set< K > key Set():获取所有键的集合
        Set<String> set = map.keySet();
        for(String key : set){
            System.out.println(key);
        }
        
        System.out.println(map);
        /*
        001
        002
        003
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Collection< V > values():获取所有值的集合

package Day_12;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //Collection< V > values():获取所有值的集合
        Collection<String> values = map.values();
        for(String value : values){
            System.out.println(value);
        }

        System.out.println(map);
        /*
        成龙
        李连杰
        刘德华
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Map集合的遍历

根据键找值:
1.获取所有键的集合
2.遍历键值对对象的集合,获取到每一个键
根据键找值

package Day_12;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class test6 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //获取所有键的集合
        Set<String> set = map.keySet();
        //遍历键的集合,获取每一个值
        for(String key : set){
            String value = map.get(key);
            System.out.println(key+"-----"+value);
        }
    }
}

根据键值对对象找键和值
1.获取所有键值对对象的集合
2.遍历键值对对象的集合,获取到每一个键值对对象
3.根据键值对对象找键和值

package Day_12;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class test7 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //获取所有键值对对象的集合
        //Set<Map.Entry<K, V>>  entrySet():获取键值对对象的集合,得到每一个键值对对象
        Set<Map.Entry<String, String>> set = map.entrySet();

        //遍历键值对对象的集合,得到每一个键值对对象
        for(Map.Entry<String, String> me : set){
            String key = me.getKey();
            String value = me.getValue();
            System.out.println(key+"------"+value);
        }
    }
}

两种遍历方式图解
两种遍历方式图解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Java Servlet代码示例,说明如何处理文件上传: ```java import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; @WebServlet("/UploadServlet") @MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB maxFileSize = 1024 * 1024 * 10, // 10MB maxRequestSize = 1024 * 1024 * 50) // 50MB public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取上传的文件集合 List<Part> fileParts = request.getParts().stream() .filter(part -> "file".equals(part.getName())) .collect(Collectors.toList()); // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); // 循环处理上传的文件 for (Part filePart : fileParts) { // 获取上传的文件名 String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // 将文件保存到指定目录 filePart.write("/path/to/save/" + fileName); // 输出上传成功信息 out.println("上传文件 " + fileName + " 成功!"); } } } ``` 这个示例使用了Java Servlet 3.0的新特性:`@MultipartConfig`注解,用来处理文件上传。其中,`fileSizeThreshold`、`maxFileSize`和`maxRequestSize`参数分别指定了文件大小的阈值、最大文件大小和最大请求大小。在上面的代码中,我们设置了阈值为2MB,最大文件大小为10MB,最大请求大小为50MB。 `doPost()`方法获取上传的文件集合,然后循环处理每个文件。对于每个文件,我们可以通过`Part`对象的`getSubmittedFileName()`方法获取上传的文件名,然后将文件保存到指定目录。 请注意,上面的代码只是一个简单的示例,实际的文件上传代码可能需要更多的错误处理、安全性考虑和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值