这篇文章总结了所有的Java集合(Collection)。主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式。 Arrays Array是Java特有的数组。...java.util.Arrays 包含了许多处理数据的实用方法: Arrays.asList:可以从 Array 转换成 List。可以作为其他集合类型构造器的参数。...这个方法集合了Java 5的自动装箱和无参变量的特性,来实现将一个变量快速地传给 equals() 方法——所以这个方法在比较了对象的类型之后是直接传值进去比较的。...EnumSet:值为枚举类型的Set。Java的每一个enum都映射成一个不同的int。这就允许使用BitSet——一个类似的集合结构,其中每一比特都映射成不同的enum。...相关阅读 Java 基本类型集合库:Trove:Trove库概述——存储Java基本类型数据的集合库(与大多数JDK中的Objects类不同)。
Java集合类 1.简介: java集合类包含在java.util包下 集合类存放的是对象的引用,而非对象本身。 集合类型主要分为Set(集),List(列表),Map(映射)。...1.1 java集合类图 上述类图,自己整理出主要内容是如下: 2.集合详解 2.1 HashSet HashSet是Set接口的一个子类 主要的特点是: 里面不能存放重复元素,元素的插入顺序与输出顺序不一致...SortedSet extends Set { //返回与此有序集合关联的比较器,如果使用元素的自然顺序,则返回 null。...} } } } 实例用TreeSet保存对象引用,并且实现Comparator中compare方法进行比较和排序 输出结果: 表明TreeSet是可以按照自定义方法中的比较进行排序的...集合中元素被访问的顺序取决于集合的类型。 如果对ArrayList进行访问,迭代器将从索引0开始,每迭代一次,索引值加1。 然而,如果访问HashSet中的元素,每个元素将会按照某种随机的次序出现。
Java集合框架由一组接口、抽象类和实现类组成。在Java集合类中,主要有以下几种集合类型: List:元素按顺序排列的集合,可以通过位置访问集合中的元素,允许重复元素。...Set:不允许重复元素的集合,没有顺序要求。 Map:一种键值对形式的存储结构,每个键对应一个值。 接下来让我们来具体了解Java集合的三种基本类型。...下面是一个使用ArrayList的例子: import java.util.ArrayList; import java.util.List; public class TestList {...下面是一个使用HashSet的例子: import java.util.HashSet; import java.util.Set; public class TestSet { public...下面是一个使用HashMap的例子: import java.util.HashMap; import java.util.Map; public class TestMap { public
Java集合中的四种遍历方式: package cn.javabs.demo; import java.util.HashMap; import java.util.Iterator; import...java.util.Map; /** * Map集合的四种运用方法 * @author MrYang */ public class MapDemo { public static void...System.out.println(map.size()); // 第一种: /* * Set set = map.keySet(); //得到所有key的集合...System.out.println(it + " " + str); } // 第二种: System.out.println("第二种:通过Map.entrySet使用...集合中根据值取键【根据value取key值】 注意: 在Java中,一个Key 是对应一个Value,但一个Value却可以对应多个Key。
Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。...] 返回该集合的元素个数 scard [在这里插入图片描述] 删除集合中的某个元素 srem ......[在这里插入图片描述] 随机从该集合中取出一个值 spop [在这里插入图片描述] 随机从该集合中取出n个值。不会从集合中删除。...[在这里插入图片描述] 把集合中一个值从一个集合移动到另一个集合 smove value [在这里插入图片描述] 返回两个集合的交集元素 sinter Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。
Redis集合类型在实际的使用中,有很多个场景可以使用,下面我们简单了解一下。...在这一点上,使用Redis集合类型是最合适的技术方案。 好友 我们还是以社交网站为例。网站中有很多用户,有些用户可能是我们认识的也就是好友,而有些用户可能是我们不认识的,也就是推荐好友。...而这正好可以使用Redis集合类型中的交集功能,即可实现。当然我们还可以使用差集、并集等Redis集合类型中高级功能,可以实现很多类似共同好友、推荐好友等功能。...---- 当然上述功能只是比较常见的使用场景,我们也可以通过集合和列表组合实现,更多复杂的数据存储。
Java基础-day07-代码题-自定义数据类型&ArrayList集合 1.饭店结账程序. 定义菜品类,属性为名称,价格,数量. 集合中添加若干菜品对象....3.编写一个程序的模拟班级学生的成绩库, 包含多项成绩,英语,数学,Java. 实现如下功能: 1.可以修改某个学生的某项分数. 2.可以打印全班同学成绩 要求使用集合来完成. ? ?...2:将原来的人名字符串修改为使用人类对象 c) 实现步骤 定义Person类 定义Person类,包含成员变量名称、年龄、地址 存储所有同学姓名 在main方法中ArrayList集合类型的变量并创建对象为变量赋值...代码实现: package StudentJavaSEday07; /* 自定义类型 人类 属性 姓名 String 年龄 int 性别 String 身高 double 是否热爱java...boolean isLoveJava; } package StudentJavaSEday07; //导入集合ArrayList import java.util.ArrayList; //导入Random
第08天 自定义类型&方法&集合混合使用 第1章 引用类型作为参数与返回值 1.1 引用类型是一种数据类型 自定义引用类型与int、double等数据类型相同,均是一种数据类型。...如:打印集合中所有偶数 /* 定义方法,集合作为参数 如:打印集合中所有偶数 */ //导入ArrayList import java.util.ArrayList; public class Test3...3.0.3 自定义类型与集合的使用优点分析 当使用自定义类型时,将数据与数据之间产生了合理必要的联系:一个商品的属性应都属于一个商品,则可以以一个商品作为数据操作的基本单位。...当使用集合时,由原来成员位置定义多个对象改为定义一个集合对象。所有使用数据的地方循环遍历即可,无论有再多新数据的产生,其代码不需要更改。...; import java.util.Scanner; /* * 使用switch语句完成三个分支的代码逻辑 * 当用户输入1时,让用户输入所要购买的商品数量 * 当用户输入2时,给用户打印出对应的购物小票
集合类型的自动注入是Spring提供的另外一个强大功能。我们在方便的使用依赖注入的特性时,必须要思考对象从哪里注入、怎么创建、为什么是注入这一个对象的。...1 注入方式 1.1 收集方式 多个用户Bean定义: 有了集合类型的自动注入后,即可收集零散的用户Bean: 这样即可完成集合类型注入: 但当持续增加一些user时,可能就不喜欢用上述的注入集合类型了...// 获取集合的元素类型 Class类型转化 上一步获取的所有的Bean都以java.util.LinkedHashMap.LinkedValues存储,和目标类型大不相同,所以最后按需转化。...3 修正 务必避免两种方式共存去装配集合!只选用一种方式即可。 比如只使用直接装配: 只使用收集方式: 如何做到让用户2优先输出呢?
今天我们介绍一下Redis有序集合类型的使用场景。Redis有序集合最典型的使用场景就是排行榜。这里的排行榜指的是这一类的功能,也就是这种涉及到排行的相关功能,都可以采用Redis有序集合来处理。...下面我们将以这种为例来分享一下,怎么用Redis有序集合处理这种相关的业务。...如果此用户以后又获得了其它用户的赞,我们可以用zincrby命令直接修改当前有序集合的分值。 zincrby key increment member ?...还有一种情况就是当前用户被删除了,所以这种情况下,我们将使用zrem命令。 zrem key member [member ...] ?
二、对自定义类型进行排序 定义一个普通类: public class Person { public int Id { get; set; } public string...那么如果让自定义类型Person也可以排序,那么试试实现该接口; 那么将上面的代码修改一下看看 public class Person:IComparable { public...三、对集合按照多种不同规则进行排序 实际使用中,经常需要对集合按照多种不同规则进行排序,这就需要定义其他比较规则,可以在Compare方法中定义,该方法属于IComparer泛型接口,请看下面的代码...下面用新定义的这个比较器对集合进行排序: //================对集合按照多种不同规则进行排序========================= List使用linq进行排序 sort方法的一个重载是Comparison类型的参数; ? 那就看一下 Comparison是怎么一回事吧: ?
问题: 有一个乱序的对象集合,要求先按对象的属性A排序(排序规则由业务确定,非A-Z或0-9的常规顺序),相同A属性的记录,按根据属性B排序(排序规则,同样由业务确定,非常规顺序) -前提:业务规则是明确的...:RCS -> RCF -> TFD -> DEP -> DLV 要求排序后变成下面这样: [成都/RCS, 成都/DEP, 上海/RCF, 上海/DEP, 法兰克福/RCF, 法兰克福/DLV] java...代码: 1 package acc.test; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import...java.util.Comparator; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map
Java集合类Collection,它是一个接口,他有两个子接口List和Map,Collection主要方法 boolean add(E e); boolean addAll(Collection<
Set集合类型: 所谓的集合好比一个乾坤袋,什么东西都可以放进去,但是每个集合中的各个元素不能重复。...redis的set是string类型的无序集合 set元素最大可以包含(2的32次方-1)个元素 关于set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection...通过这些操作可以很容易的实现好友推荐功能: 下图所示: 我们用集合把两个人的朋友圈表示出来: Set集合类型操作: 首先我们还是先看一下set类型的操作: sadd key member:...设置名为tomFri的key,其类型为set,内部有5个元素 设置名为linkenFri的key,其类型为set,内部有5个元素: 已经设置好两个集合了。...smove p1 p2 member: 把集合1的元素移动到集合2中、 srem key member: 从集合中删除指定的元素出去 这就是set集合类型的基本操作使用。
Java 8 的Stream API 提供了不少可替代Java 集合框架的操作。...但是不少同学在学习和使用Stream时依然感到很困惑,不知道何时使用Stream,甚至想不起来使用Stream,甚至在Stream和集合框架的选择上也成了问题。今天胖哥将尝试帮你解决这些疑问。...Stream 并非数据结构 虽然我们把Stream和以Collection为代表的集合框架类型放在一起对比,但它只是将数据源(Source)中的数据元素提取到数据操作管道,并按照定义好的规则(操作符)进行...看初始化成本 对于集合,一旦定义使用需要一次性的加载入内存,如果你打算在内存中重用这些数据,使用集合就非常合适;而Stream的惰性特点,在终端操作之前不会有任何的中间操作,这意味着不会上来就初始化数据到内存...是否需要固定的格式 Stream流的表现格式通常没有Java集合框架丰富,Java集合框架提供了如Set、List、Map等格式。如果你需要终端返回展现,显然集合框架更加合适。
JAVA自定义注解 注解概念 注解是Java SE 5.0版本开始引入的概念,它是对java源代码的说明,是一种元数据(描述数据的数据)。...使用元注解自己定义的注解 JDK中有一些元注解,主要有@Target,@Retention,@Document,@Inherited用来修饰注解。...@Target 表明该注解可以应用的java元素类型 Target类型 描述 ElementType.TYPE 应用于类、接口(包括注解类型)、枚举 ElementType.FIELD 应用于属性(包括枚举中的常量...ElementType.PACKAGE 应用于包 ElementType.TYPE_PARAMETER 1.8版本新增,应用于类型变量) ElementType.TYPE_USE 1.8版本新增,应用于任何使用类型的语句中...,使用时还会用到; * 注解类型元素:注解类型元素是注解中内容,可以理解成自定义接口的实现部分; */ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME
在编程中,常常遇到多种类型、多种状态的情况,对于这种可以事先预知的业务我们常常有两种表示方法: 使用DB管理,优点是方便在线维护,缺点是每次加载都要读取数据库,加载的性能取决于数据库的压力 。...使用枚举类型,优点是加载速度依赖于应用服务器,缺点是修改比较麻烦,每次加类型都需要发布代码。...对于Java枚举类型的使用,我们可以总结为以下几个方面:整型值,字符串字段和字符串的相关描述,下面我们就讨论如何方便的在这几个类型中相关转换,对于所有的类型转换可以总结如下: int --> Enum...String -->Enum Enum-->String Enum-->描述 int -->描述 String -->描述 下面我们对于上面的7种描述来做出对应的转换方法,首先定义一个枚举类型...enum EnumDemo { fail, success, unknow; } 为了能够保证相关的value和值能够保存下来,我们需要对枚举类型改成如下
提要 Map集合概述 Map K:键的类型 V:值的类型 把建映射到值的对象中,每一个建最多映射到一个值 不能有重复的键 创建 具体的实现类是:HashMap 用多态的方式创建 //创建Map...集合 Map hashMap = new HashMap(); 添加元素 put() 切记 K 重复会替换之前的值 //创建...也就是集合中键值对的个数 size() 返回 int 类型 //创建Map集合 Map hashMap = new HashMap<String...containsKey() 返回 boolean类型,true:有,false:没有 注意是键 也就是K //创建Map集合 Map hashMap...() 返回 boolean类型,true:有,false:没有 注意是值 也就是V //创建Map集合 Map hashMap = new
一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 ①:add(Object o):向Set集合中添加元素,不允许添加重复数据。...HashSet(); set.add("张三"); set.add("李四"); for (String name : set) { //使用...System.out.println(name); } } 二、LinkedHashSet集合 LinkedHashSet集合的特点 三、TreeSet集合 1.TreeSet集合的特点...2.TreeSet的基本使用 ①.插入是按字典序排序的 public static void main(String[] args) { TreeSet ts=new TreeSet(...; while(it.hasNext()) { System.out.println(it.next()); } } ②.如果插入的是自定义对象
//定义注解 import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target...\_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD...; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER...extends Payload>[] payload() default {}; // 指定多个时使用 @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE...ConstraintValidatorContext context) { if (value == null) { //空的时候不校验,非空校验配合@NotNull或者@NotBlank使用
领取专属 10元无门槛券
手把手带您无忧上云