Java基础之集合框架系列(四)

7、List存储工人信息相关操作 编程题目: 7.完成下面的要求:   (1)创建一个List,在List中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200   (2)在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300;   (3)删除wang5 的信息;   (4)利用f... 阅读详情

1.Map概述

1.概述

1.Map也是集合框架中的一员,独立于Collection体系。实际上,Collection称为单列集合,Map称为双列集合

2.Map集合以键值对的方式进行存储,并且需要保持键的唯一性

3.Map包含Hashtable,HashMap,TreeMap三个常见的部分

2.Map接口共性方法

顶级接口 Map<K,V>

顶级接口方法:

1.添加
V put(K key, V value)
向Map集合中添加指定的键值对。
说明:若加入两个键名相同的键值对,则保存后添加的值,先添加的值会被返回

void putAll(Map<? extends K,? extends V> m)
从指定Map中将所有对应关系复制到此Map中。

2.删除
>void clear()
从此映射中移除所有映射关系。
V remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除。

3.判断
boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。
boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true。
boolean equals(Object o)
比较指定的对象与此映射是否相等。

4.获取
V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
int size()
返回此映射中的键-值映射关系数。
Collection<V> values()
返回此映射中包含的值的 Collection 视图。
int hashCode()
返回此映射的哈希码值。
>Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。
>Set<K> keySet()
返回此映射中包含的键的 Set 视图。

小提示:所谓视图可以认为是相应集合类的一个实例对象

示例代码:

    //以HashMap为例演示Map的共性方法
    import java.util.HashMap;

    public class MapCommonDemo {

    public static void main(String[] args) {
        //新建HashMap对象,以存储字符串键值对为例
        HashMap<String,String> hm=new HashMap<String,String>();
        //初始化添加字符串键值对元素
        hm.put("key1", "示例元素1");
        hm.put("key2", "示例元素2");
        hm.put("key3", "示例元素3");
        hm.put("key4", "示例元素4");

        //对Map集合进行一次输出
        System.out.println("原始集合:"+hm);

        //根据键获取字符串值
        System.out.println("根据键---key3获取的元素为:"+hm.get("key3"));

        //获取集合的元素数
        System.out.println("该集合所含元素数:"+hm.size());

        //判断集合是否含有指定的键
        System.out.println("判断集合是否存在特定的键---key4:"+hm.containsKey("key4"));      

        //判断集合是否含有指定的值
        System.out.println("判断集合是否存在特定的值---示例元素5:"+hm.containsValue("示例元素5"));  

        //通过指定的键移除映射关系
        hm.remove("key3");
        System.out.println("进行移除操作后的集合:"+hm);

        //对集合中的元素进行清空
        hm.clear();
        System.out.println("判断集合是否为空:"+hm.isEmpty());
    }

}

程序运行结果:

原始集合:{key1=示例元素1, key2=示例元素2, key3=示例元素3, key4=示例元素4}
根据键—key3获取的元素为:示例元素3
该集合所含元素数:4
判断集合是否存在特定的键—key4:true
判断集合是否存在特定的值—示例元素5:false
进行移除操作后的集合:{key1=示例元素1, key2=示例元素2, key4=示例元素4}
判断集合是否为空:true

3.Map子类对象特点

Hashtable:
底层是哈希表数据结构,不可以存入null键和null值。用作键的对象必须实现hashCode()方法和equals()方法。该集合是线程同步的。jdk1.0便存在,效率较低。

HashMap:
底层是哈希表数据结构,允许使用null键和null值。该集合是非线程同步的。jdk1.2后出现,效率较高

TreeMap:
底层是二叉树数据结构。该集合是非线程同步的,可以用于对Map集合中的键进行排序。

说明:Map的结构与Set相似,实际上Set底层使用了Map集合

4.Map集合的元素取出方式

1.Map-keySet

这是Map集合元素的第一种取出方式

相关方法:

Set<K> keySet()
返回此映射中包含的键的 Set 视图。

说明:通过keySet()将Map中的所有键存入到Set集合中,因为Set具备迭代器,所以能以迭代方式取出所有的键。然后再根据Map的get()方法,获取每一个键对应的值。

示例代码:

        //部分代码  
        //新建HashMap对象,以存储字符串键值对为例
        HashMap<String,String> hm=new HashMap<String,String>();
        //初始化添加字符串键值对元素
        hm.put("key1", "示例元素1");
        hm.put("key2", "示例元素2");
        hm.put("key3", "示例元素3");
        hm.put("key4", "示例元素4");

        //利用keySet对Map集合中的元素进行输出
        Set<String> keys = hm.keySet();
        Iterator<String> it = keys.iterator();
        while (it.hasNext()) {
            String key = it.next();          
            System.out.println(key +"--"+hm.get(key));
        }

说明:这也是Map集合和Set集合的联合使用方式

程序运行结果:

key1–示例元素1
key2–示例元素2
key3–示例元素3
key4–示例元素4

2.Map-entrySet

这是Map集合元素的第二种取出方式

相关方法:

Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。

说明:将Map集合中的映射关系存入到了Set集合中,而这个关系的数据类型就是Map.Entry。

注意:此时迭代器的泛型也应该与返回的Set集合泛型一致,即<Map.Entry<K,V>>

接口 Map.Entry<K,V>

相关方法:

boolean equals(Object o)
比较指定对象与此项的相等性。
K getKey()
返回与此项对应的键。
V getValue()
返回与此项对应的值。
int hashCode()
返回此映射项的哈希码值。
V setValue(V value)
用指定的值替换与此项对应的值。

说明:实际上Map.Entry是Map接口中的一个内部接口

示例代码:

        //部分代码
        //新建HashMap对象,以存储字符串键值对为例
        HashMap<String,String> hm=new HashMap<String,String>();
        //初始化添加字符串键值对元素
        hm.put("key1", "示例元素1");
        hm.put("key2", "示例元素2");
        hm.put("key3", "示例元素3");
        hm.put("key4", "示例元素4");

        //利用entrySet对Map集合中的元素进行输出
        Set<Map.Entry<String,String>> entry=hm.entrySet();
        Iterator<Map.Entry<String,String>> it=entry.iterator();
        while(it.hasNext()){
            Map.Entry<String,String> me=it.next();
            System.out.println(me.getKey()+"---"+me.getValue());
        }

程序运行结果:

key1—示例元素1
key2—示例元素2
key3—示例元素3
key4—示例元素4

5.HashMap

HashMap()
构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。
HashMap(int initialCapacity)
构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。
HashMap(int initialCapacity, float loadFactor)
构造一个带指定初始容量和加载因子的空 HashMap。
HashMap(Map<? extends K,? extends V> m)
构造一个映射关系与指定 Map 相同的新 HashMap。

特有方法:

Object clone()
返回此 HashMap 实例的浅表副本,并不复制键和值本身。
Set<Map.Entry<K,V>> entrySet()
返回此映射所包含的映射关系的 Set 视图。
Set<K> keySet()
返回此映射中所包含的键的 Set 视图。

6.TreeMap

构造方法:

TreeMap()
使用键的自然顺序构造一个新的、空的树映射。
TreeMap(Comparator<? super K> comparator)
构造一个新的、空的树映射,该映射根据给定比较器进行排序。
TreeMap(Map<? extends K,? extends V> m)
构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。
TreeMap(SortedMap<K,? extends V> m)
构造一个与指定有序映射具有相同映射关系和相同排序顺序的新的树映射。

特有方法:

Object clone()
返回此 TreeMap 实例的浅表副本。

Comparator<? super K> comparator()
返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。


Map.Entry<K,V> firstEntry()
返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。
K firstKey()
返回此映射中当前第一个(最低)键。
K lastKey()
返回映射中当前最后一个(最高)键。
Map.Entry<K,V> lastEntry()
返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。

Map.Entry<K,V> pollFirstEntry()
移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。
Map.Entry<K,V> pollLastEntry()
移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。


Map.Entry<K,V> ceilingEntry(K key)
返回一个键-值映射关系,它与大于等于给定键的最小键关联;如果不存在这样的键,则返回 null。
K ceilingKey(K key)
返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。
Map.Entry<K,V> floorEntry(K key)
返回一个键-值映射关系,它与小于等于给定键的最大键关联;如果不存在这样的键,则返回 null。
K floorKey(K key)
返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。

Map.Entry<K,V> higherEntry(K key)
返回一个键-值映射关系,它与严格大于给定键的最小键关联;如果不存在这样的键,则返回 null。
K higherKey(K key)
返回严格大于给定键的最小键;如果不存在这样的键,则返回 null。
K lowerKey(K key)
返回严格小于给定键的最大键;如果不存在这样的键,则返回 null。
Map.Entry<K,V> lowerEntry(K key)
返回一个键-值映射关系,它与严格小于给定键的最大键关联;如果不存在这样的键,则返回 null。


NavigableSet<K> descendingKeySet()
返回此映射中所包含键的逆序 NavigableSet 视图。
NavigableMap<K,V> descendingMap()
返回此映射中所包含映射关系的逆序视图。

SortedMap<K,V> headMap(K toKey)
返回此映射的部分视图,其键值严格小于 toKey。
NavigableMap<K,V> headMap(K toKey, boolean inclusive)
返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey。

NavigableSet<K> navigableKeySet()
返回此映射中所包含键的 NavigableSet 视图。

NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
返回此映射的部分视图,其键的范围从 fromKey 到 toKey。
SortedMap<K,V> subMap(K fromKey, K toKey)
返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。

SortedMap<K,V> tailMap(K fromKey)
返回此映射的部分视图,其键大于等于 fromKey。
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive)
返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey。

7.相关实例应用

1.Map应用

需求描述:

自定义Worker对象,具有年龄和姓名属性,姓名和年龄相同的对象视为同一个Worker对象,以保证元素唯一性。将Worker对象作为键,其家庭住址作为值,存入Map集合

步骤:

1.描述Worker对象,复写hashCode()和equals()方法,实现Comparable接口,实现compareTo()方法。
2.定义Map容器,将Worker对象作为键,Worker地址作为值,进行存入。
3.对Map中的元素进行获取操作。

示例代码:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

class Worker implements Comparable{
    private String name;
    private int age;
    //构造方法
    public Worker(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    //重写hashCode方法
    public int hashCode() {
        return name.hashCode()+age*39;
    }

    //重写equals方法
    public boolean equals(Object obj) {
        if(!(obj instanceof Worker))
            return false;
        Worker w=(Worker)obj;
        if(!name.equals(w.getName()))
            return false;
        if(age==w.getAge())
            return true;
        return false;
    }

    //实现compareTo方法
    public int compareTo(Object o){
        if(!(o instanceof Worker))
            throw new RuntimeException("类型错误");
        Worker w=(Worker)o;
        int status=name.compareTo(w.getName());
        if(status==0)
            return new Integer(age).compareTo(new Integer(w.getAge()));
        return status;
    }

}

public class WorkerMapDemo {

    public static void main(String[] args) {
        //新建HashMap集合
        HashMap<Worker,String> hm=new HashMap<Worker,String>();
        //向HashMap集合中添加Worker-地址键值对
        hm.put(new Worker("小王",25), "北京");
        hm.put(new Worker("小王",25), "天津");
        hm.put(new Worker("小李",20), "广东");
        hm.put(new Worker("小黄",24), "山西");
        hm.put(new Worker("小曹",22), "山西");

        //利用keySet对HashMap中的元素进行取出
        Set<Worker> sw=hm.keySet();
        Iterator<Worker> it=sw.iterator();
        while(it.hasNext()){
            Worker w=it.next();
            System.out.println(w.getName()+"--"+w.getAge()+"--"+hm.get(w));
        }
    }

}

程序运行结果:

小王–25–天津
小李–20–广东
小黄–24–山西
小曹–22–山西

说明:从程序中可以看出,当向集合中存入键相同的键值对时,后存入的键值对会覆盖先存入的键值对。

相关思想:如果自定义的类可能实例化多个对象,则应该考虑到该类的对象可能会存入Set,List,Map等多种集合结构中,因此需要考虑重写hashCode()和equals()方法,以及实现Comparable接口,实现其compareTo()方法

2.TreeMap应用

1.排序

需求描述:

构造Worker对象,按照年龄对Worker对象进行升序排序

说明:
1.由于数据是以键值对形式存在的,所以需要要使用可以排序的Map子类集合对象TreeMap
2.运用比较器Comparator进行自定义排序,类似于TreeSet的处理方式

示例代码:

//省略Worker类代码
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

//自定义比较器类,按照Worker对象的年龄升序排序
class WorkerComparator implements Comparator<Worker>{

    //重写compare方法
    public int compare(Worker w1, Worker w2) {
        if(w1.getAge()>w2.getAge())
            return 1;
        if(w1.getAge()==w2.getAge())
            //当年龄相同时则将姓名作为次要排序条件
            return w1.getName().compareTo(w2.getName());
        else
            return -1;
    }

}

public class TreeMapCompDemo {

    public static void main(String[] args) {
        //实例化自定义比较器对象
        WorkerComparator wc=new WorkerComparator();
        //新建TreeMap集合装载Worker-地址键值对
        TreeMap<Worker,String> tm=new TreeMap<Worker,String>(wc);
        //向TreeMap集合中添加Worker-地址键值对
        tm.put(new Worker("小王", 25), "北京");
        tm.put(new Worker("小李", 20), "广东");
        tm.put(new Worker("小黄", 28), "山西");
        tm.put(new Worker("小曹", 19), "山西");

        //使用entrySet取出元素
        Set<Map.Entry<Worker,String>> entry=tm.entrySet();
        Iterator<Map.Entry<Worker,String>> it=entry.iterator();
        while(it.hasNext()){
            Map.Entry<Worker,String> me=it.next();
            Worker w=me.getKey();
            System.out.println(w.getName()+"--"+w.getAge()+"--"+me.getValue());
        }

    }

}

程序运行结果:

小曹–19–山西
小李–20–广东
小王–25–北京
小黄–28–山西

2.统计

需求描述:

统计字符串中各个字母出现的次数,并按照字母的在字母表中的排列顺序分别对出现次数进行输出

思路:通过需要的结果发现:每一个字母都有对应的次数,说明字母和次数之间都有映射关系,因此可以选择Map集合

步骤:
1.将字符串转换为字符数组,因为要对每一个字母进行操作

2.定义一个Map集合,因为打印结果的字母有顺序,所以用TreeMap集合

3.遍历字符数组,将遍历到的每一个字母作为键查找Map集合中的元素。若返回null,说明Map集合中该字母还不存在,将该字母和1作为键值对存入Map集合中。若返回值不为null,那么获取该键的值并自增后存入

4.将Map集合中的数据按照要求的格式进行输出

示例代码:


import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class StringCountCharDemo {

    //自定义静态方法方法统计字符串中出现的字母次数
    public static void countChar(String s,HashMap<Character,Integer> hm){
        //将字符串转化为字符数组
        char[] c=s.toCharArray();
        //遍历字符数组,并进行计数
        for(int i=0;i<c.length;i++){
            if(!hm.containsKey(c[i]))
                hm.put(c[i], 1);
            else{
                int count=hm.get(c[i]);             
                hm.put(c[i],++count);
            }
        }
    }

    public static void main(String[] args) {
        //目标字符串
        String target="aasdadasfefftyytudada";
        //新建HashMap对象存储字母-频次键值对
        HashMap<Character,Integer> hm=new HashMap<Character,Integer>();

        //统计字母频次
        countChar(target,hm);

        //对HashMap集合中的元素进行取出
        Set<Character> ks=hm.keySet();
        Iterator<Character> it=ks.iterator();
        while(it.hasNext()){
            Character key=it.next();
            System.out.print(key+"("+hm.get(key)+")");
        }
    }

}

程序运行结果:

a(6)s(2)d(4)t(2)e(1)u(1)f(3)y(2)

3.Map拓展

集合的嵌套使用:在Map集合中,还可以将Map集合对象作为值,实现Map的嵌套使用

示例代码:

        //部分代码
        //新建HashMap对象储存高中学生信息
        HashMap<String,Integer> highSchStu=new HashMap<String,Integer>();
        highSchStu.put("bill",16);
        highSchStu.put("tony",15);
        highSchStu.put("marry",18);

        //新建HashMap对象储存大学学生信息
        HashMap<String,Integer> colSchStu=new HashMap<String,Integer>();
        colSchStu.put("tim",20);
        colSchStu.put("park",22);
        colSchStu.put("curry",19);

        //新建HashMap对象储存已经建立的两个HashMap对象
        HashMap<String,HashMap<String,Integer>> schoolStu=
                new HashMap<String,HashMap<String,Integer>>();
        schoolStu.put("高中学生信息:",highSchStu);
        schoolStu.put("大学学生信息:",colSchStu);

        //利用keySet对元素进行取出
        Set<String> keys=schoolStu.keySet();
        Iterator<String> it=keys.iterator();    
        while(it.hasNext()){
            String key=it.next();
            HashMap<String,Integer> hm=schoolStu.get(key);
            //直接将获取到的整个集合输出
            System.out.println(key+hm);
        }

程序运行结果:

高中学生信息:{tony=15, marry=18, bill=16}
大学学生信息:{tim=20, curry=19, park=22}


相关阅读:
菜鸟猿大战Java之集合框架系列(一)
菜鸟猿大战Java之集合框架系列(二)
菜鸟猿大战Java之集合框架系列(三)
菜鸟猿大战Java之集合框架系列(五)

Java-集合案例三 1.向TreeSet集合中加入5个员工的对象,根据员工的年龄(升序)进行排序... import java.util.Set; import java.util.TreeSet; /** * 1.向TreeSet集合中加入5个员工的对象,根据员工的年龄(升序)进行排序,若年龄相同,再根据 工龄(降序)来排序,若工龄相同,根据薪水(降序)排序 * */ class Employee implements Comparable<Employee>{ int age; int work 阅读详情

相关推荐

Java集合框架是什么?说出一些集合框架的优点?

干货太重,且文字比较多。需要花费时间与耐心细细咀嚼,但是真的能收获到很多。 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。 1...

李人 8710

【小白学Java】Java集合

慕课网 2-4 编程练习 使用集合ArrayList对字符串进行存储和管理。 效果图: 任务 1、定义ArrayList对象 2、存储学科名称,见运行效果图 3、输出集合中元素的个数 4、遍历输出集合中的所有元素 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListDemo { public static void main(String[] args

实施工程师从入门到放弃 749

Java基础知识之什么是集合框架

Java基础知识之什么是集合框架,Java基础知识之集合Collection概述,前面的文章,我们已经学习了Java的一些基础知识,比如泛型、注解等等内容,接着本博客继续学习Java中一个很常见的内容,集合。Java Collections 框架由接口和类组成,集合框架是用于存储数据和操作一组对象的统一架构

Nicky's blog 5134

Java练习题——关于集合的使用,用泛型来处理数据

现有如下员工信息: 工号 姓名 月薪资 001 杨树苗 4650 002 刘翠花 4280 003 魏巍 6820 004 李宁 5128 005 赵明 3180 请完成如下编码任务: 1)定义一个公共实体类(class Employee)用于描述员工的工号(id)、姓名(name)和薪资(salary)等信息; 2)定义一个公共管理类(class E

qq_44723773的博客 827

IEEE Access投稿全流程:从LaTeX模板到Overleaf实战(附避坑指南)

本文详细解析了向IEEE Access期刊投稿的完整流程,重点介绍了如何使用LaTeX模板在Overleaf平台上高效撰写和格式化论文。内容涵盖模板选择、作者信息填写、公式图表排版、参考文献管理(BibTeX)以及投稿前的最终检查清单,旨在帮助研究者,尤其是LaTeX新手,规避常见技术问题,顺利完成符合期刊严格要求的稿件提交。

open4的博客 578

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 475

实验四.集合

通过本次实验更加熟悉了List集合、Set集合以及Map集合的使用,集合之间的关系更加明了,根据需要使用合适的集合,才能使逻辑更加简单,同时熟悉了泛型在集合中的使用,可以解决不同数据类型之间的转化。2、现有若干图书信息(包含名称title、作者author、定价price)需要存储到set集合中,保证集合中无重复元素,并遍历查看。(2)在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300。(2)统计每个字符出现的次数,使用map存储,字符为键,次数为值。(2)熟悉泛型的使用;

Java 928

COCOS 3.8 接入高德定位SDK

/微信登录所必须的code。//是否获得code。

八喜互动 1995

Java基础(十九):集合框架

Set接口是Collection的子接口,Set接口相较于Collection接口没有提供额外的方法Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败Set集合支持的遍历方式和Collection集合一样:foreach和IteratorSet的常用实现类有:HashSet、TreeSet、LinkedHashSetHashSet 是 Set 接口的主要实现类,大多数时候使用 Set 集合时都使用这个实现类。

java开发 3963

An example: 2D immersed boundary lattice Boltzmann method code--By Timm Krüger.2011.

//谢谢Timm Krüger大佬的代码。 还是老样子,有啥问题Feel free to tell us~毕竟群众力量大嘛~QQ群:293267908。 // 话不多说,上干货! // ISBN 978-3-319-44649-3 (Electronic) // 978-3-319-44647-9 (Print) // http://www.springer.c...

weixin_37783345的博客 1420

【数字孪生与仿真技术】10:半导体制造中的虚拟量测技术深度解析:从多尺度建模到工业级应用

摘要:半导体制造过程中,晶圆加工需实时监测300+关键参数,传统物理量测技术面临产能损耗、延迟检测等痛点。本文系统阐述虚拟量测(Virtual Metrology)技术的完整解决方案,通过多尺度混合建模实现物理机理与数据驱动的深度融合。内容涵盖等离子体刻蚀、薄膜沉积等关键工艺的物理模型构建,LSTM神经网络的数据校正算法,以及边缘-云协同的实时部署架构。某12英寸晶圆厂实践表明,虚拟量测技术可减少70%物理量测频次,异常漏检率从18%降至3%,机台利用率提升11%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2558

【JavaSE系列】Java集合框架之Collection,Map接口

本篇文章带大家认识Java基础知识——集合框架,从本篇文章开始正式拉开数据结构的序幕,要深入了解一件事,那必然先得见个面,本文带大家认识Java集合框长什么样,以及怎么使用Collection和Map接口。

未见花闻的博客 1832

40.8K星爆火!Crawl4AI实战突破Cloudflare 5秒盾:AI反爬新范式,爬虫再也不被封

Crawl4AI的爆火(40.8K星)不是偶然——它解决了爬虫工程师最头疼的反爬问题,让爬虫从“体力活”变成“脑力活”,不用再花费大量时间配置指纹、编写行为脚本。但要注意:爬虫必须遵守目标网站的robots.txt协议,不得用于非法爬取数据(比如用户隐私、商业机密)。合理使用技术,才能长久落地。如果你在使用Crawl4AI时遇到具体问题(比如绕过更严格的反爬、批量爬取配置),欢迎在评论区交流,我会第一时间分享解决方案!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1604

Java集合框架源码详解系列(一)

之前写过关于 C++ STL 的四篇文章,现在开始写一下关于Java集合框架的文章,该系列博客将会写很长时间。不管是C++的STL也好,Java的集合框架也好,这两者其实都是将一些基本的数据结构进行了封装实现,从现在开始博主将带领大家遨游在Java集合框架的源码世界,准备好了吗?Go!!!

晴空๓ 4307

桌面实施远程光电体积描记法:使用面部视频测量心率的C++详细指南

在现代医疗和健康监测领域,心率是一个非常重要的生理参数,它可以为我们提供关于身体健康状况的重要信息。但是,随着技术的进步,现在我们有了一种新的方法,称为远程光电体积描记法(rPPG),它可以无需与皮肤接触就测量心率。然后,我们从面部颜色的信号序列中提取绿色通道的值,因为绿色通道对于心率的变化最为敏感。在上述代码中,我们使用了OpenCV库,它是一个开源的计算机视觉库,非常适合这种应用。这种变化是由于血液流动引起的,当心脏跳动时,血液流经面部,导致肤色的轻微变化。要实现rPPG,首先需要检测并跟踪人脸。

qq_38334677的博客 611

Simulink仿真模块-Signal Generator

Signal Generator:生成各种波形 所在的位置库为:Simulink / Sources 模型为: 说明 Signal Generator模块可以产生四种不同波形: 正弦波 方波 锯齿波 随机 可以使用 hertz 或 rad/sec 为单位表示信号参数。双击模型可以选择需要生成的波形,如图所示: 使用默认参数值,可以获得下列波形之一: 波形 波形输出 正弦波 ...

jk_101的博客 2656

Java集合系列详解

一,集合简介 Java中的集合可以分为四种体系: List:代表有序、重复的集合 Set:代表无序、不可重复的集合 Map:代表具有映射关系的集合 Queue:体系集合,代表一种队列集合实现 二,Java集合类的关系 Java中的集合类主要有两个接口派生:Collection和Map Collection类图如下: Map类图如下: 三,Collection接口 1,Set体系 Set是一种...

wang_yong_hui_1234的博客 5990

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java基础系列八 集合框架

集合概念 Iterable接口-Collection接口-List接口:LinkedList类、ArrayList类,Set接口:HashSet类、TreeSet类,Map接口:HashMap类、TreeMap类,Iterator接口 与 ListIterator接口

653

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 集合框架 基础 总结 - lenyan

在 Java 编程中,集合框架是一个非常重要的部分,它提供了一组用于存储、操作和处理数据的类和接口。集合框架可以大大简化我们处理数据集合的工作,提高编程效率和代码质量。本文将对 Java 集合框架的基础内容进行总结,包括常见的集合类型、接口及其特点、常用方法等。Java 集合框架位于java.utilCollectionMap和Iterator。Collection是一个用来存储一组对象的接口,它有几个重要的子接口,如ListSet和Queue。Map则是用于存储键值对的数据结构。Iterator。

lenyan~的博客 1324

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java集合框架全面详解

集合框架是一个统一的架构,用于表示和操作集合,使集合能够独立于其实现细节进行操作。Java集合框架提供了一系列接口和类,用于存储、检索、操作和传输数据对象。尽管Java集合框架提供了丰富的实现,但有时您可能需要创建自定义的集合类。扩展现有集合类@Override@Override实现集合接口size = 0;@Override@Override@Override// 省略其他必要的方法实现...使用组合而非继承@Override。

qq_38830315的博客 2211

[ Java 基础系列 ]很详细很详细的 Java 集合框架教程!

新手引导 集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet······信手拈来,抬手就拿来用,在IDE上龙飞凤舞,但是作为一名合格的优雅的程序猿,仅仅了解怎么使用API是远远不够的,如果在调用API时,知道它内部发生了什么事情,就像开了透视外挂一样,洞穿一切,这种感觉才真的爽,而且这样就不是集合提供什么功能给我们使用,而是我们选择使用它的什么功能了。 集合框架总览 下图堪称集合框架的上帝视角,讲到集合框架不得不看的就是这幅图,当然,你会觉得眼花

欢迎来到「小菠萝」的博客 625

Java21下的 Java 集合框架

本文深入解析Java集合框架的核心概念、体系结构与常用方法,涵盖Collection接口的通用操作、迭代器遍历及Java21新增的SequencedCollection接口,通过代码示例演示集合的增删改查、反转与遍历技巧,助你掌握高效数据管理与操作。

m0_73941339的博客 1678

Java基础08-集合框架—单列集合

TreeSet集合存储自定义类型的对象时,必须指定排序规则,支持如下两种方式来指定比较规则。方式一:让自定义的类( 如学生类)实现Comparable接口,重写里面的compareTo方法来指定比较规则。方式二:通过调用TreeSet集合有参数构造器,可以设置Comparator对象( 比较器对象,用于指定比较规则。//学生类(通过实现 Comparable 接口来自定义规则)//重写compareTo方法实现安装规则排序@Override。

qq_57340195的博客 1008

Java集合框架解析

Java集合框架(Java Collections Framework, JCF)位于java.utilCollection:单列数据集合的根接口List:有序可重复集合Set:无序不可重复集合Queue:队列集合Map:双列键值对集合Iterator:集合遍历接口。

qq_45351273的博客 2058

Java基础系列文章-集合框架体系

坚持最初的梦想,年轻没有失败。

相信自己有能力,那么你就真的会有! 891
上一篇: java知识点之泛型
下一篇: java知识点之增强for循环
CodingEnding
博客等级 码龄11年 86粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值