set 订阅
深圳电子产品质量检测中心(以下简称SET)于1985年成立。是具有独立法人资格的公正检测机构,是电子、信息、通信、医疗产品测试技术公共服务平台。经过20多年的奋斗,已成功获得了“国家级计量认证合格单位”、“中国合格评定国家认可委员会(CNAS)认可实验室”、“国家强制性产品认证(3C)指定检测机构”、“国家节能产品认证指定检测机构”、“高新技术产品成果鉴定指定检测单位”、“深圳市电子产品质量监督检验机构”、“深圳口岸电子产品进出口商检单位”等20余项国内外重要资质。 展开全文
深圳电子产品质量检测中心(以下简称SET)于1985年成立。是具有独立法人资格的公正检测机构,是电子、信息、通信、医疗产品测试技术公共服务平台。经过20多年的奋斗,已成功获得了“国家级计量认证合格单位”、“中国合格评定国家认可委员会(CNAS)认可实验室”、“国家强制性产品认证(3C)指定检测机构”、“国家节能产品认证指定检测机构”、“高新技术产品成果鉴定指定检测单位”、“深圳市电子产品质量监督检验机构”、“深圳口岸电子产品进出口商检单位”等20余项国内外重要资质。
信息
其它解释
命令提示符中的set指令
外文名
SET
相关荣誉
“国家级计量认证合格单位”等
功    能
电子、信息、通信、医疗产品测试
全    称
深圳电子产品质量检测中心
成立时间
1985年
setSET指令
SET /A expressionSET /P variable=[promptString], -表达式分隔符如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。环境变量替换已如下增强:%PATH:str1=str2%会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。也可以为扩展名指定子字符串。%PATH:~10,5%会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。%PATH:~-10%会提取 PATH变量的最后十个字符。%PATH:~0,-2%会提取 PATH 变量的所有字符,除了最后两个。终于添加了延迟环境变量扩充的支持。该支持总是按默认值被停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。请参阅 CMD /?考虑到读取一行文本时所遇到扩充的限制时,延迟环境变量扩充是很有用的,而不是执行的时候。以下例子说明直接变量扩充的问题:set VAR=beforeif "%VAR%" == "before" (set VAR=afterif "%VAR%" == "after" @echo If you see this, it worked)不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和"after",这两者永远不会相等。同样,以下这个例子也不会达到预期效果:set LIST=for %i in (*) do set LIST=%LIST% %iecho %LIST%原因是,它不会在目录中建立一个文件列表,而只是将LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量是空的。因此,我们真正执行的 FOR 循环是:for %i in (*) do set LIST= %i这个循环继续将 LIST 设成找到的最后一个文件。延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面例子写成以下所示,以达到预期效果:set VAR=beforeif "%VAR%" == "before" (set VAR=afterif "!VAR!" == "after" @echo If you see this, it worked)set LIST=for %i in (*) do set LIST=!LIST! %iecho %LIST%如果命令扩展名被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个定义变量,那个定义会替代下面描述的动态定义:%CD% - 扩展到当前目录字符串。%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
收起全文
精华内容
下载资源
问答
  • set
    千次阅读
    2021-05-07 08:30:10

    1、例题

    以下的句子中应该使用 set off 还是 set out ?

    Nick ______ to visit his parents this morning.
    
    Can you ______ the chairs as shown in the plan?
    

    下面的例子中有答案。

    2、set off 和 set out 的相同点

    在表示“出发、动身,开始一段旅行”的这一概念时,set off 和 set out 的意思是一样的。

    We set off at 4am tomorrow.
    我们明天凌晨四点出发。
    
    James set out in search of his pet cat.
    詹姆士出门去找他的宠物猫了。
    

    以上两个例句中,set off 和 set out 的意思是一样,都是指“离开某个地方,开始一段旅行;或者开始往某一方向前进”。

    因此, 以上例句中的 set off 和 set out 可以相互替代。

    不过人们根据个人的说话习惯,在用词方面会有自己的偏爱。

    We set off on the last part of our China trip.
    我们开始了中国之旅的最后一程。
    
    
    When setting out on a long walk, it’s important to wear suitable shoes.
    穿合适的鞋,对远足很重要。
    
    Nick set out to visit his parents this morning.
    尼克今天早上动身去探望他的父母。
    

    以上的例句中我们用 set off 或者 set out 表示“出发、动身”。

    3、set off 和 set out 的不同点

    3.1、set off

    1)set off 表示“启动什么东西,让它开始工作”:

    Lily opened the door and set off the alarm.
    莉莉一开门,警报就响了。
    

    2)set off 表示“引起爆炸”,比如:放烟花 set off fireworks

    We set off some fireworks to celebrate the New Year.
    我们燃放烟花庆祝新年。
    

    3)set off 还可以表示“衬托,显示出美丽”:

    Her red dress was set off by a golden belt.
    那条金色的皮带很好地衬托了她的红裙的美丽。
    

    4)set someone off 的意思是“引起某人做某事”。

    Just mentioning her ex-boyfriend could set her off crying.
    只要一提起她的前任男友,她就会哭个不停。
    

    在以上的含义和情形下,我们只能使用 set off。

    3.2、set out

    1)set out 的一个常用含义是“有特定目标并开始准备为实现目标行动”

    也就是我们中文中通常所说的“立志于做…”。

    Mary set out to be the first girl to run the London Marathon in her school.
    玛莉立志要成为学校第一个参加伦敦马拉松赛的女孩。
    

    2)set out 可以表示“清晰地说明或写明什么事情”:

    I set out the reasons for applying for this job.
    我说明了申请这份工作的原因。
    

    3)set out 还可以表示“摆放、陈列” :

    Can you set out the chairs as shown in the plan?
    你能按图纸设计摆好椅子吗?
    

    4、总结:

    在表示“出发、动身,开始一段旅行”的这一概念上,set off 和 set out 的意思是一样的。
    它们各自还有其它多种不同的含义。

    更多相关内容
  • 新手小白学JAVA Set HashSet Map HashMap

    万次阅读 多人点赞 2021-05-20 13:35:38
    1 set接口 1.1 概述 Set是一个不包含重复数据的Collection Set集合中的数据是无序的(因为Set集合没有下标) Set集合中的元素不可以重复 – 常用来给数据去重 1.2 Set集合的特点 数据无序且数据不允许重复 HashSet :...

    1 Map接口

    1.1 概述

    Java.util接口Map<K,V>
    类型参数 : K - 表示此映射所维护的键 V – 表示此映射所维护的对应的值
    也叫做哈希表、散列表. 常用于键值对结构的数据.其中键不能重复,值可以重复
    在这里插入图片描述

    1.2 特点

    1. Map可以根据键来提取对应的值
    2. Map的键不允许重复,如果重复,对应的值会被覆盖
    3. Map存放的都是无序的数据
    4. Map的初始容量是16,默认的加载因子是0.75
      在这里插入图片描述

    TIPS:源码摘抄:
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
    初始容量1<<4,相当于1*(2^4),也就是16
    static final float DEFAULT_LOAD_FACTOR = 0.75f;
    默认的加载因子是0.75f,也就是存到75%开始扩容,按照2的次幂进行扩容

    1.3 继承结构

    在这里插入图片描述

    1.4 常用方法

    学习Map接口中的方法即可

    void clear() 从此映射中移除所有映射关系(可选操作) boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true
    boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true
    Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图
    boolean equals(Object o) 比较指定的对象与此映射是否相等
    V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
    int hashCode() 返回此映射的哈希码值
    boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true
    Set keySet() 返回此映射中包含的键的 Set 视图
    V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)
    void putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)
    V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)
    int size() 返回此映射中的键-值映射关系数
    Collection values() 返回此映射中包含的值的 Collection 视图

    1.5 练习:Map常用方法测试

    创建包: cn.tedu.map
    创建类: MapDemo.java

    package cn.tedu.list;
    
    import java.util.*;
    
    /**本类用于测试Map接口*/
    public class MapDemo {
        public static void main(String[] args) {
            //1.创建Map对象
            /**Map中的数据要符合映射规则,一定注意要同时指定K和V的数据类型
             * 至于这个K和V具体要指定成什么类型,取决于具体的业务需求*/
            Map<Integer,String> map = new HashMap<>();//注意导包:java.util
            //2.向map集合存入数据,注意方法是put(),并且需要存入一对<K,V>的值
            map.put(9527,"白骨精");
            map.put(9528,"黑熊精");
            map.put(9529,"鲤鱼精");
            map.put(9530,"黄毛怪");
            map.put(9531,"黑熊精");
            map.put(9527,"女儿国国王");
            /**1.map中存放着的都是无序的数据
             * 2.map中的value可以重复-比如我们可以存两个黑熊精
             * 3.map中的key不允许重复,如果重复,后面的value会把前面的value覆盖掉
             * 比如女儿国国王和白骨精都是9527,白骨精就被覆盖掉了*/
            System.out.println(map);//查看map集合中的数据是否存入成功
    
            //3.进行方法测试
            //map.clear();//清空集合
            System.out.println(map.hashCode());//获取集合的哈希码
            System.out.println(map.equals("黄毛怪"));//判断“黄毛怪”是否与集合对象相等
            System.out.println(map.isEmpty());//判断集合是否为空
            System.out.println(map.size());//获取集合中元素的个数
    
            //判断当前map集合中是否包含指定的Key键
            System.out.println(map.containsKey(9527));//true
            //判断当前map集合中是否包含指定的Value
            System.out.println(map.containsValue("白骨精"));//false,因为已被覆盖
            //根据key值获取到对应的value值
            System.out.println(map.get(9530));
            //根据此key值对应的键值对,K与V都删了
            System.out.println(map.remove(9529));
            System.out.println(map.containsKey(9529));
            System.out.println(map.containsValue("鲤鱼精"));
    
            //将map集合中的所有value取出,放入Collection集合中
            //Collection<Type>中Type的类型,取决于map中value的类型
            Collection<String> values = map.values();
            System.out.println(values);//[女儿国国王, 黑熊精, 黄毛怪, 黑熊精]
    
            //4.map集合的迭代方式一
            /**方式一:
             * 遍历map中的数据,但是map本身没有迭代器,所以需要先转换成set集合
             * Set<Key>:把map中的所有key值存入到set集合当中--keySet()*/
            //4.1将map集合中的key值取出存入set集合中,集合的泛型就是key的类型Integer
            Set<Integer> keySet = map.keySet();
            //4.2想要遍历集合就需要获取集合的迭代器
            Iterator<Integer> it = keySet.iterator();
            //4.3循环迭代集合中的所有元素
            while(it.hasNext()){//判断是否有下一个元素可以迭代
                Integer key = it.next();//拿到本轮循环中获取到的map的key
                String value = map.get(key);
                System.out.println("{"+key+","+value+"}");
            }
    
            /**方式二:
             * 遍历map集合,需要把map集合先转成set集合
             * 是把map中的一对键值对key&value作为一个Entry<K,V>整体放入set
             * 一对K,V就是一个Entry*/
            Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
            //获取迭代器
            Iterator<Map.Entry<Integer, String>> it2 = entrySet.iterator();
            while(it2.hasNext()){//判断是否有下一个元素可迭代
                //本轮遍历到的一个Entry对象
                Map.Entry<Integer, String> entry = it2.next();
                Integer key = entry.getKey();//获取Entry中的key
                String value = entry.getValue();//获取Entry中的value
                System.out.println("{"+key+","+value+"}");
            }
        }
    }
    

    在这里插入图片描述

    2 HashMap

    2.1 前言

    HashMap的键要同时重写hashCode()和equlas()
    hashCode()用来判定二者的hash值是否相同,重写后根据属性生成
    equlas()用来判断属性的值是否相同,重写后,根据属性判断
    –equlas()判断数据如果相等,hashCode()必须相同
    –equlas()判断数据如果不等,hashCode()尽量不同

    2.2 HashMap的存储过程:

    1. HashMap的结构是数组+链表 或者 数组+红黑树 的形式
    2. HashMap底层的Entry[ ]数组,初始容量为16,加载因子是0.75f,扩容按约为2倍扩容
    3. 当存放数据时,会根据hash(key)%n算法来计算数据的存放位置,n就是数组的长度,其实也就是集合的容量
    4. 当计算到的位置之前没有存过数据的时候,会直接存放数据
    5. 当计算的位置,有数据时,会发生hash冲突/hash碰撞
      解决的办法就是采用链表的结构,在数组中指定位置处以后元素之后插入新的元素
      也就是说数组中的元素都是最早加入的节点
    6. 如果链表的长度>8且数组长度>64时,链表会转为红黑树,当链表的长度<6时,红黑树会重新恢复成链表
      在这里插入图片描述

    2.3 练习:获取HashMap的数据

    创建包: cn.tedu.map
    创建类: TestHashMap.java

    package cn.tedu.collection;
    
    import java.util.HashMap;
    
    /**本类用于HashMap的练习*/
    public class TestHashMap {
    	public static void main(String[] args) {
    		//创建HashMap对象
    		HashMap<Integer,String> map = new HashMap();
    		/**
    		 * 源码摘抄:
    		 * static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
    		 * 初始容量为1<<4,相当于1*(2^4)=16
    		 * static final float DEFAULT_LOAD_FACTOR = 0.75f;
    		 * 默认的加载因子是0.75,也就是说存到75%开始扩容,按照2的次幂进行扩容
    		 */
    		/*
    		 * 达到容量的加载因子后,就会重新开辟空间,重新计算所有对象的存储位置,也叫做rehash
    		 * 设置初始容量与加载因子要讲求相对平衡,如果加载因子过低,则rehash过于频繁,影响性能
    		 * 如果初始容量设置太高或者加载因子设置太高,影响查询效率
    		 */
    	}
    }
    

    2.4 练习:字符串中字符统计

    创建包: cn.tedu.map
    创建类: TestMap.java

    package cn.tedu.map;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    /*本类用于练习map案例:统计字符串中字符的个数
    * 需求效果:用户输入aabbbcc,输出:a=2,b=3,c=2*/
    public class TestMap2 {
        public static void main(String[] args) {
            //1.接收用户输入的字符串
            System.out.println("请您输入要统计的字符串:");
            String input = new Scanner(System.in).nextLine();
            //2.准备一个map集合,用来存放出现的字符Character与字符的个数Integer
            //为什么字符类型Character作为map中的KEY?因为key不允许重复,而次数是可以重复的
            Map<Character,Integer> map = new HashMap<>();
    
            //3.准备要存入map中的数据:K和V
            //3.1 遍历用户输入的字符串,统计每个字符
            for (int i = 0; i < input.length(); i++) {
                //3.2获取本轮循环中遍历到的字符
                char key = input.charAt(i);
                //System.out.println(key);//打印查看每轮循环获取到的字符,没有问题
                //3.2根据获取到的key拿到对应的value
                Integer value = map.get(key);//根据字符,获取map中这个字符保存的次数
                if(value == null){//之前这个字符没有出现过,次数还是Integer的默认值null
                    map.put(key,1);//没有出现过,次数就设置为1
                }else {//value不是null走else
                    map.put(key,value+1);//之前这个字符出现过,次数变为之前的次数+1
                }
            }
            System.out.println("各个字符出现的次数为:"+map);
        }
    }
    
    

    3 set接口

    在这里插入图片描述

    3.1 概述

    1. Set是一个不包含重复数据的Collection
    2. Set集合中的数据是无序的(因为Set集合没有下标)
    3. Set集合中的元素不可以重复 – 常用来给数据去重

    3.2 Set集合的特点

    1. 数据无序且数据不允许重复
    2. HashSet : 底层是哈希表,包装了HashMap,相当于向HashSet中存入数据时,会把数据作为K,存入内部的HashMap中。当然K仍然不许重复。
    3. TreeSet : 底层是TreeMap,也是红黑树的形式,便于查找数据

    3.3 常用方法

    学习Collection接口中的方法即可

    3.4 HashSet

    3.4.1 概述

    底层是哈希表,包装了HashMap,相当于向HashSet中存入数据时,会把数据作为K存入内部的HashMap中,其中K不允许重复,允许使用null.
    在这里插入图片描述
    在这里插入图片描述

    3.5 练习: Set相关测试

    创建包: cn.tedu.collection
    创建类: TestSet.java

    package cn.tedu.collection;
    
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
    
    /*本类用于测试Set*/
    public class TestSet {
        public static void main(String[] args) {
            //1.创建对应的集合对象
            Set<String> set = new HashSet<>();
            //2.存入数据
            set.add("紫霞仙子");
            set.add("至尊宝");
            set.add("蜘蛛精");
            set.add("紫霞仙子");
            set.add(null);
            /*1.set集合中的元素都是没有顺序的
            * 2.set集合中的元素不能重复
            * 3.set集合可以存null值,但是最多只有一个*/
            System.out.println(set);//[蜘蛛精, null, 至尊宝, 紫霞仙子]
    
            //3.常用方法测试
            System.out.println(set.contains("唐僧"));//false,判断是否包含指定元素
            System.out.println(set.isEmpty());//false,判断是否为空
            System.out.println(set.remove(null));//true,移除指定的元素
            System.out.println(set);//[蜘蛛精, 至尊宝, 紫霞仙子]
            System.out.println(set.size());//3,获取集合中元素的个数
            System.out.println(Arrays.toString(set.toArray()));//[蜘蛛精, 至尊宝, 紫霞仙子],将集合转为数组
    
            //4.1创建set2集合,并向集合中存入数据
            Set<String> set2 = new HashSet<>();
            set2.add("小兔纸");
            set2.add("小脑斧");
            set2.add("小海疼");
            set2.add("小牛犊");
            System.out.println(set2);//[小兔纸, 小海疼, 小牛犊, 小脑斧]
            System.out.println(set.addAll(set2));//将set2集合的所有元素添加到set集合中
            System.out.println(set);//[蜘蛛精, 小兔纸, 小海疼, 至尊宝, 小牛犊, 小脑斧, 紫霞仙子]
            System.out.println(set.containsAll(set2));//判断set2集合的所有元素是否都在set集合中
            System.out.println(set.removeAll(set2));//删除set集合中属于set2集合的所有元素
            System.out.println(set);//[蜘蛛精, 至尊宝, 紫霞仙子]
            System.out.println(set.retainAll(set2));//只保留set集合中属于set和set2集合的公共元素
            System.out.println(set);//[]
    
    		//5.集合的迭代
    		Iterator<String> it = set2.iterator();//5.1获取集合的迭代器
    		while(it.hasNext()) {//5.2判断集合是否有下个元素
    			String s = it.next();//5.3如果有,进循环获取当前遍历到的元素
    			System.out.println(s);
    		}
        }
    }
    

    3.6 练习: Set相关测试2

    创建包: cn.tedu.collection
    创建类: Student.java

    package cn.tedu.collection;
    
    import java.util.Objects;
    
    //1.创建自定义引用类型Student
    public class Student {
        //2.创建属性
        String name;//姓名
        int id;//学号
    
        //3.提供本类的全参构造
        public Student(String name, int id) {
            this.name = name;
            this.id = id;
        }
        //3.2提供学生类的toString()
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", id=" + id +
                    '}';
        }
        //3.3添加学生类重写的equals()与hashCode()
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return id == student.id && Objects.equals(name, student.name);
        }
        @Override
        public int hashCode() {
            return Objects.hash(name, id);
        }
    }
    

    3.6 练习: Set相关测试2

    创建包: cn.tedu.collection
    创建类: TestSet2.java

    package cn.tedu.collection;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /*本类用于进一步测试set*/
    public class TestSet2 {
        public static void main(String[] args) {
            //4.创建集合对象set
            Set<Student> set = new HashSet<>();
    
            //5.创建自定义类Student的对象
            Student s1 = new Student("张三",3);
            Student s2 = new Student("李四",4);
            Student s3 = new Student("李四",4);
            //6.将创建好的学生对象存入set集合中
            set.add(s1);
            set.add(s2);
            set.add(s3);
            /*如果set中存放的是我们自定义的类型
            * 需要给自定义类中添加重写的equals()与hashCode(),才会去重
            * 不然会认为s2和s3的地址值不同,是两个不同的对象,不会去重*/
            System.out.println(set);
        }
    }
    

    4 拓展

    HashMap扩容
    成长因子:
    static final float DEFAULT_LOAD_FACTOR = 0.75f;
    前面的讲述已经发现,当你空间只有仅仅为10的时候是很容易造成2个对象的hashcode 所对应的地址是一个位置的情况。这样就造成 2个 对象会形成散列桶(链表)。这时就有一个加载因子的参数,值默认为0.75 ,如果你hashmap的 空间有 100那么当你插入了75个元素的时候 hashmap就需要扩容了,不然的话会形成很长的散列桶结构,对于查询和插入都会增加时间,因为它要一个一个的equals比较。但又不能让加载因子很小,如0.01,这样显然是不合适的,频繁扩容会大大消耗你的内存。这时就存在着一个平衡,jdk中默认是0.75,当然负载因子可以根据自己的实际情况进行调整。

    展开全文
  • python之Set操作(下)

    千次阅读 2021-03-17 02:53:06
    Set判断1) 判断两个Set是否相等2) 判断两个Set有没有交集3) 判断一个Set是否包含另一个Set4) 判断一个Set是否是另一个Set的子集5) 判断元素是否在Set中7. Set转换1) Set转String2) Set转Tuple3) Set转...

    文章目录

    python之Set操作(下)5. Set删除1) 删除一个指定元素2) 随机删除一个元素3) 清空Set4) 删除整个Set

    6. Set判断1) 判断两个Set是否相等2) 判断两个Set有没有交集3) 判断一个Set是否包含另一个Set4) 判断一个Set是否是另一个Set的子集5) 判断元素是否在Set中

    7. Set转换1) Set转String2) Set转Tuple3) Set转List

    8. Set运算1) 并集2) 交集3) 差集4) 补集

    python之Set操作(下)

    5. Set删除

    Set删除元素,以下操作对象是可变集合(del关键字删除变量除外)

    1) 删除一个指定元素

    Set删除一个指定元素 推荐写法: 使用Python3的标准库,set类内置函数:discard(elem),elem指定要删除的元素

    修改当前集合,删除一个指定元素若要删除的元素不存在,则不执行任何操作

    set1 = {"hello", "world", 2, "python"}

    set1.discard("python")

    print(set1)  # {'world', 'hello', 2}

    set1.discard("java")

    print(set1)  # {'world', 'hello', 2}

    一般写法: 使用Python3的标准库,set类内置函数:remove(elem),elem指定要删除的元素

    修改当前集合,删除一个指定元素若要删除的元素不存在,则抛出KeyError

    set1 = {"hello", "world", 2, "python"}

    set1.remove("python")

    print(set1)  # {'world', 'hello', 2}

    set1.remove("java")  # 抛出KeyError: 'java'

    2) 随机删除一个元素

    Set随机删除一个元素 推荐写法: 使用Python3的标准库,set类内置函数:pop()

    修改当前集合,随机删除一个元素若Set为空,则抛出KeyError

    set1 = {"hello", "world", 2, "python"}

    set1.pop()

    print(set1)  # {2, 'hello', 'python'}

    empty_set = set()

    empty_set.pop()  # 抛出KeyError: 'pop from an empty set'

    3) 清空Set

    删除Set中所有元素 推荐写法: 使用Python3的标准库,set类内置函数:clear()

    修改当前集合,删除Set中所有元素

    set1 = {"hello", "world"}

    set1.clear()

    print(set1)  # set()

    4) 删除整个Set

    删除整个Set变量 推荐写法: 使用关键字“del”

    del作用于变量而不是对象del只是解除变量和对象的引用关系,而不是销毁对象释放占用的内存空间python的垃圾回收机制主要采用的是引用计数的方式

    set1 = {"hello", "world"}

    del set1

    print(set1)  # 抛出NameError: name 'set1' is not defined

    6. Set判断

    1) 判断两个Set是否相等

    判断两个Set是否相等 推荐写法: 使用运算符”==“

    因为Set的无序性,所以对元素顺序不敏感若两个集合长度和所包含元素相同,则返回True,否则返回False

    a = {1, 2, 3}

    b = {3, 1, 2}

    print(a == b)  # True

    c = {"hello", "world", "python"}

    d = {"python", "hello"}

    print(c == d)  # False

    2) 判断两个Set有没有交集

    如果Set a和Set b有相同元素,那么Set a和Set b有交集 推荐写法: 使用Python3的标准库,set类内置函数:isdisjoint(other),other指代另一个Set

    若两个集合有交集(包括两个集合相等),则返回False,否则返回True

    a = {"hello", "world"}

    b = {"hello", "python"}

    print(a.isdisjoint(b))  # False

    print(a.isdisjoint(a))  # False

    c = {1, 2, 3}

    d = {4, 5, 6}

    print(c.isdisjoint(d))  # True

    3) 判断一个Set是否包含另一个Set

    如果Set a中的元素涵盖Set b的全部元素,那么Set a包含Set b 推荐写法: 使用Python3的标准库,set类内置函数:issuperset(other),other指代另一个Set

    若集合a包含集合b(包括两个集合相等和真包含关系),则返回True,否则返回False等同于运算符”>=“若要判断集合a是否真包含集合b,使用运算符”>“

    a = {"hello", "world", "python"}

    b = {"hello", "python"}

    print(a.issuperset(b))  # True

    print(a >= b)  # True

    print(a > b)  # a真包含b True

    print(a.issuperset(a))  # True

    print(a >= a)  # True

    print(a > a)  # False

    c = {1, 2, 3}

    d = {4, 5, 6}

    print(c.issuperset(d))  # False

    e = {1, 2, 3}

    f = {2, 3, 4}

    print(e.issuperset(f))  # False

    4) 判断一个Set是否是另一个Set的子集

    如果Set a的全部元素都在Set b中,那么Set a是Set b的子集 推荐写法: 使用Python3的标准库,set类内置函数:issuperset(other),other指代另一个Set

    若集合a是集合b的子集(包括两个集合相等和真子集关系),则返回True,否则返回False等同于运算符”<=“若要判断集合a是否是集合b的真子集,使用运算符”

    a = {"hello", "python"}

    b = {"hello", "world", "python"}

    print(a.issubset(b))  # True

    print(a <= b)  # True

    print(a < b)  # a是b的真子集 True

    print(a.issubset(a))  # True

    print(a <= a)  # True

    print(a < a)  # False

    c = {1, 2, 3}

    d = {4, 5, 6}

    print(c.issubset(d))  # False

    e = {1, 2, 3}

    f = {2, 3, 4}

    print(e.issubset(f))  # False

    5) 判断元素是否在Set中

    判断元素是否在Set中 推荐写法: 使用运算符“in”

    对大小写敏感

    if elem in set1:

    """do something"""

    if elem not in set1:

    """do something"""

    set1 = {"hello", "world", "python"}

    print("python" in set1)  # True

    print("python" not in set1)  # False

    print("Python" in set1)  # False

    7. Set转换

    Set与String、Tuple、List相互转换

    1) Set转String

    推荐写法: 使用Python3的标准库,str类内置函数:str(obj),obj指代一个python对象

    set1 = {"hello", "world"}

    string = str(set1)

    print(string)  # "{'hello', 'world'}"

    2) Set转Tuple

    推荐写法: 使用Python3的标准库,tuple类内置函数:tuple([iterable]),iterable是可选参数,指代一个可迭代对象

    set1 = {"hello", "world"}

    tuple1 = tuple(set1)

    print(tuple1)  # ('hello', 'world')

    3) Set转List

    推荐写法: 使用Python3的标准库,list类内置函数:list([iterable]),iterable是可选参数,指代一个可迭代对象

    set1 = {"hello", "world"}

    list1 = list(set1)

    print(list1)  # ['hello', 'world']

    8. Set运算

    基于集合之间的包含关系,进行求并集、交集、差集、对称差集、补集的集合间运算

    1) 并集

    并集是指包含所有集合的元素的集合(重复元素只出现一次)。 *推荐写法: 使用Python3的标准库,set类内置函数:union(others),others指代其它Set

    返回一个新Set,不会修改当前Set接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”|“

    a = {"hello", "world"}

    b = {"hello", "python"}

    c = {1, 2, 3}

    d = a.union(b, c)

    print(d)  # {1, 2, 'world', 'hello', 3, 'python'}

    _d = a | b | c

    print(_d)  # {1, 2, 'world', 'hello', 3, 'python'}

    print(a)  # Set a的元素没有变化 {'hello', 'world'}

    推荐写法: 使用Python3的标准库,set类内置函数:update(*others),others指代其它Set

    修改当前集合,添加新元素到当前集合中若添加的元素在集合中已存在,则该元素只会出现一次,重复的会被忽略接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”|=“

    a = {"hello", "world"}

    _a = a.copy()

    b = {"hello", "python"}

    c = {1, 2, 3}

    a.update(b, c)

    print(a)  # Set a的元素被修改 {'hello', 1, 2, 'python', 3, 'world'}

    _a |= b

    _a |= c

    print(_a)  # Set _a的元素被修改 {'hello', 1, 2, 'python', 3, 'world'}

    2) 交集

    交集是指包含所有集合的相同元素的集合(重复元素只出现一次)。 推荐写法: 使用Python3的标准库,set类内置函数:intersection(*others),others指代其它Set

    返回一个新Set,不会修改当前Set接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”&“

    a = {"hello", "world"}

    b = {"hello", "world", "python"}

    c = {"hello", "python"}

    d = a.intersection(b, c)

    print(d)  # {'hello'}

    _d = a & b & c

    print(_d)  # {'hello'}

    print(a)  # Set a的元素没有变化 {'hello', 'world'}

    推荐写法: 使用Python3的标准库,set类内置函数:intersection_update(*others),others指代其它Set

    修改当前集合,移除当前Set中与其它Set不同的元素接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”&=“

    a = {"hello", "world"}

    _a = a.copy()

    b = {"hello", "world", "python"}

    c = {"hello", "python"}

    a.intersection_update(b, c)

    print(a)  # Set a的元素被修改 {'hello'}

    _a &= b

    _a &= c

    print(_a)  # Set _a的元素被修改 {'hello'}

    3) 差集

    差集是指包含当前集合特有元素的集合(重复元素只出现一次)。 推荐写法: 使用Python3的标准库,set类内置函数:difference(*others),others指代其它Set

    返回一个新Set,不会修改当前Set接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”-“

    a = {"hello", "world", 2, "python"}

    b = {"hello", "world"}

    c = {"hello", "python"}

    d = a.difference(b, c)

    print(d)  # {2}

    _d = a - b - c

    print(_d)  # {2}

    print(a)  # Set a的元素没有变化 {'hello', 'world', 2, 'python'}

    推荐写法: 使用Python3的标准库,set类内置函数:difference_update(*others),others指代其它Set

    修改当前集合,移除当前Set中与其它Set相同的元素接受多个Set对象参数,多个参数使用逗号”,“隔开等同于运算符”-=“

    a = {"hello", "world", 2, "python"}

    _a = a.copy()

    b = {"hello", "world"}

    c = {"hello", "python"}

    a.difference_update(b, c)

    print(a)  # Set a的元素被修改 {2}

    _a -= b

    _a -= c

    print(_a)  # Set _a的元素被修改 {2}

    4) 补集

    补集包括绝对补集(两个集合是包含关系)和相对补集(两个集合有交集,但并不是包含关系);A相对于B的补集是指B中移除与A相同的元素的集合(重复元素只出现一次)。 推荐写法: 使用运算符“-”返回一个新Set,不会修改当前Set

    a = {"hello", "world", 2, "python"}

    b = {"hello", "world"}

    c = {"hello", "python"}

    # b相对于a的绝对补集(a包含b)

    b_a = a - b

    print(b_a)  # {2, 'python'}

    # b相对于c的相对补集(c和b有交集但是c不包含b)

    b_c = c - b

    print(b_c)  # {'python'}

    展开全文
  • c++ set用法详解

    万次阅读 多人点赞 2021-07-30 15:29:57
    c++ set用法详解setset常用操作set单元素应用set多元素应用(结构体) set set就是集合,STL的set用二叉树实现,集合中的每个元素只出现一次(参照数学中集合的互斥性),并且是排好序的(默认按键值升序排列) 访问元素...

    c++ stack用法详解

    set

    set就是集合,STL的set用二叉树实现,集合中的每个元素只出现一次(参照数学中集合的互斥性),并且是排好序的(默认按键值升序排列)

    访问元素的时间复杂度是 O ( log ⁡ 2 n ) O(\log_2n) O(log2n)

    在c++中,set的头文件是#include<set>

    set具有迭代器set<int>::iterator i 定义一个迭代器,名为i 可以把迭代器理解为C语言的指针

    set常用操作

    set<int> q;     //以int型为例 默认按键值升序
    set<int,greater<int>> p;  //降序排列 
    int x;
    q.insert(x);	//将x插入q中
    q.erase(x);		//删除q中的x元素,返回0或1,0表示set中不存在x
    q.clear();		//清空q
    q.empty();		//判断q是否为空,若是返回1,否则返回0
    q.size();		//返回q中元素的个数
    q.find(x);		//在q中查找x,返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即 q.end()
    q.lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素
    q.upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素
    
    q.rend();		  //返回第一个元素的的前一个元素迭代器
    q.begin();		  //返回指向q中第一个元素的迭代器
    
    q.end();		 //返回指向q最后一个元素下一个位置的迭代器
    q.rbegin();		 //返回最后一个元素
    

    set单元素应用

    #include<iostream>
    #include<set>
    using namespace std;
    int main()
    {
    	set<int> q;   //默认按升序排列 
    	q.insert(5);
    	q.insert(5);
    	q.insert(5);
    	cout<<"q.size "<<q.size()<<endl;   //输出 1 ,在set插入中相同元素只会存在一个
    	
    	q.clear(); //清空set
    	cout<<"q.size "<<q.size()<<"\n\n";
    	
    	q.insert(4);
    	q.insert(4);
    	q.insert(3);
    	q.insert(3); 
    	q.insert(2);
    	q.insert(1);
    	
    	cout<<"lower_bound "<<*q.lower_bound(3)<<endl;  //返回3 
    	cout<<"upper_bound "<<*q.upper_bound(3)<<"\n\n";  //返回4 
    	
    	set<int>::iterator i;
    	for( i=q.begin();i!=q.end();i++)   //set的遍历 
    		cout<<*i<<" ";				   //输出1 2 3 4,可见自动按键值排序 
    	cout<<endl;
    	
    	q.erase(4);  //删除q中的 4 
    	
    	for(i=q.begin();i!=q.end();i++)  //再次遍历set 只输出 1 2 3 
    		cout<<*i<<" ";
    	cout<<"\n\n"; 
    	
    	
    	set<int,greater<int>> p;  //降序排列 
    	p.insert(1);
    	p.insert(2);
    	p.insert(3);
    	p.insert(4);
    	p.insert(5);
    	for(i=p.begin();i!=p.end();i++)
    		cout<<*i<<" ";
    	cout<<endl;
    	
    	return 0;
    }
    

    1b3b81f8d1174077a22c078773afdc3a.png (459×238) (csdnimg.cn)

    set多元素应用(结构体)

    #include<iostream>
    #include<set>
    using namespace std;
    struct node{
    	int a,b;
    	bool operator< (const node W)const
    	{
    		return a>W.a;  //按a的值升序 
    	}
    }t;
    int main()
    {
    	set<node> q;
    	t.a=1;
    	t.b=2;
    	q.insert(t);
    	
    	t.a=4;
    	t.b=2;
    	q.insert(t);
    	
    	t.a=3;
    	t.b=5;
    	q.insert(t);	
    	
    	set<node>::iterator i;
    	for(i=q.begin();i!=q.end();i++)
    	{
    		t=*i;
    		cout<<t.a<<" "<<t.b<<endl;
    	}
    	return 0; 
    }
    

    例题

    题目:HDU - 2094 产生冠军

    代码:

    #include<iostream>
    #include<set>
    using namespace std;
    int main()
    {
    	int n;
    	string a,b;
    	while(cin>>n && n)
    	{
    		set<string> A,B;
    		for(int i=0;i<n;i++)
    		{
    			cin>>a>>b;
    			A.insert(a);
    			A.insert(b);
    			B.insert(b);
    		}
    		
    		if(A.size()-B.size()==1)
    			cout<<"Yes\n";
    		else
    			cout<<"No\n";
    	}
    	return 0;
    }
    

    c++ stack用法详解

    展开全文
  • c++ unordered_set的用法

    千次阅读 多人点赞 2022-02-23 12:01:14
    C++ 11 为 STL 标准库增添了 4 种无序(哈希)容器, 本节讲解 unordered_set 容器 unordered_set 容器,可直译为“无序 set 容器”,即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行对存储...
  • python中set详解

    万次阅读 2021-01-13 14:34:55
    python中set详解python的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合),intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算...
  • Myriad Set Pro 苹果官方字体

    千次下载 热门讨论 2014-10-23 08:49:04
    苹果官方字体:Myriad Set Pro 包含: ◦ MyriadSetPro-Semibold ◦ MyriadSetPro-Thin ◦ MyriadSetPro-ThinItalic ◦ MyriadSetPro-Ultralight ◦ MyriadSetPro-UltralightItalic
  • Set排序方法

    万次阅读 2019-04-22 21:04:28
    在讲解Set集合排序的几种方法之前,我们应该先清楚Set集合的几种类型以及特点,才能有效使用起来。 Set集合的特点 ​ Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 ​ ...
  • python set集合排序_Python Set集合

    千次阅读 2021-03-17 02:19:59
    Python Set集合Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,...
  • Set(集合)

    千次阅读 多人点赞 2021-09-10 22:32:16
    set是ES6提供的数据结构,是值的集合, 它类似数组,但成员的值都是唯一的。 Set数据结构的创建 const s1 = new Set(); //接收参数可迭代对象(数组)初始化set const s2 = new Set([1,2,2,3,4]); console.log(s1) ...
  • ipset详解

    万次阅读 2019-09-29 15:44:10
    ipset创建:create 创建一个新的ipset集合:ipset create SETNAME TYPENAME SETNAME是创建的ipset的名称,TYPENAME是ipset的类型: TYPENAME := method:datatype[,datatype[,datatype]] method指定ipset中的...
  • (十三)SET协议

    万次阅读 2021-07-23 15:29:26
    SET协议 安全电子交易协议(SET,Secure Electronic Transaction) 由威士(VISA)国际组织、万事达(MasterCard)国际组织创建,结合IBM、Microsoft、Netscope、GTE等公司制定的电子商务中安全电子交易的一个国际标准,...
  • python中set()函数简介及实例解析

    万次阅读 2021-04-27 01:16:08
    python中set()函数简介及实例解析set函数也是python内置函数的其中一个,属于比较基础的函数。其具体介绍和使用方法,下面进行介绍。set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算...
  • ES6数据结构Set和Map的区别

    千次阅读 2021-12-07 16:40:01
    Set和Map的区别 1. Map保存键值对,任何值都可以作为键值的值。 2. Set保存的是类数组数据,是值的集合。
  • MySQL的SET字段类型使用方法

    千次阅读 2021-01-19 05:20:03
    MySQL的SET字段类型使用方法SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。这样SET成员值本身不能包含逗号。例如,...
  • Java中的set集合如何理解(三)——精简

    千次阅读 多人点赞 2022-05-16 19:46:20
    在前面的内容中,我们先是一一介绍了Collection集合中都有哪些种类的集合,并且详细地讲解了List集合中的相关知识,那么今天我们来详细地讲解一下Collection集合中的另外一个分支——Set系列集合。最后还是希望这一...
  • java set 顺序

    千次阅读 2021-02-12 10:22:00
    在java语言中,提供多种不同的结构来组织对象,Set(集合)是其中的一种,本身是一个接口,其迭代时的顺序取决于其具体实现。典型的实现包括:HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以...
  • c++ set unordered_set区别

    万次阅读 多人点赞 2018-09-06 20:55:33
    c++ std中set与unordered_set区别和map与unordered_map区别类似: set基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。 unordered_set基于哈希表,数据插入和查找的...
  • js中Set的常见用法

    千次阅读 2022-03-27 19:07:58
    js中Set的常见用法
  • C++中set用法详解

    万次阅读 多人点赞 2018-03-12 10:45:54
    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表...
  • Java—Set集合(HashSet、TreeSet)

    千次阅读 2022-05-19 18:00:50
    今天来看看Java集合中的Set集合,为什么Set集合中元素不能重复?为什么Set集合是无序的?我们来共同交流交流 目录 Set集合的概述 特点 继承和实现情况 实际应用 HashSet 有什么特点吗? 方法有哪些? 实战...
  • Set的四种遍历方式

    千次阅读 2022-01-10 19:39:28
    Set的四种遍历方式
  • js中Set基本使用

    千次阅读 2022-03-02 15:16:45
    ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。 基本API 1. 创建Set实例 使用 new 关键字和 Set 构造函数...
  • ES6new Set 使用方法

    千次阅读 2020-08-25 19:56:16
    多了不说少了不唠代码说话: <!DOCTYPE html> <html> <head> <title></title> </head> <... let setData=new Set([1,2,"yang"]); console.log(setData)
  • set,E文翻译过来就是“设置”的意思,相当于数学里的“令”。 如:set X=5,就是令X=5的意思。 语法形式: SET [variable=[string]] SET /P variable=[promptString] SET /A expression 一、SET [v...
  • 目录1、set_xlim()、set_ylim()2、 xticks() 、yticks()、set_xlabels()、set_ylabels()3、双坐标轴 1、set_xlim()、set_ylim() Matplotlib会自动得出沿x、y(和z轴,如果是3D图)轴显示的变量的最小值和最大值。...
  • set_input_delay/set_output_delay

    万次阅读 多人点赞 2020-09-17 20:05:10
    假设 Tclk2q=2ns Tc1=3ns UFF1 Tsetup=1ns Thold=0.5ns 那么对于DUA的INP1来说应该如何设置input delay set_input_delay 6 -max -clock CLKA [get_ports INP1] set_input_delay -1 -min -clock CLKA [get_ports ...
  • iptables ipset详解

    千次阅读 2019-05-29 22:34:07
    iptables -I INPUT -m set --match-set blacklist src -p tcp --dport 80 -j DROP 使用ipset集合到INPUT链,相当于就是批量添加 service ipset save save后重启自动生效 需要yum install ipset-service 会把配置放...
  • 取集合中元素_Python Set集合

    千次阅读 2021-03-06 22:33:24
    Set集合阅读本文需要3分钟2019.09.05集合(set)是一个无序不重复元素的序列。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { }...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,395,506
精华内容 3,758,202
关键字:

set

友情链接: RobotUtil.zip