精华内容
下载资源
问答
  • java创建一个空集合
    千次阅读
    2021-04-12 23:33:38

    1、通过Collections.emptyList()创建空集合,调用emptyList()方法提供了相应的泛型支持。添加add和remove时会抛出异常。
    2、通过Collections.EMPTY_LIST,兼容性差一点。
    3、new ArrayList()太耗性能了

    更多相关内容
  • Java如何创建空集合对象?

    千次阅读 2021-03-22 17:50:32
    有时您需要从Java方法返回一个空集合java.util.Collections实用工具类具有创建空的三个不同的静态常量List,Set和Map。Collections.EMPTY_LISTCollections.EMPTY_SETCollections.EMPTY_MAP当您要创建类型安全的...

    有时您需要从Java方法返回一个空集合。java.util.Collections实用工具类具有创建空的三个不同的静态常量List,Set和Map。Collections.EMPTY_LIST

    Collections.EMPTY_SET

    Collections.EMPTY_MAP

    当您要创建类型安全的空集合时,还有一些方法。Collections.emptyList()

    Collections.emptySet()

    Collections.emptyMap()

    下面是代码示例。package org.nhooo.example.util;

    import java.util.*;

    public class EmptyCollectionDemo {

    public static void main(String args[]) {

    List list = Collections.EMPTY_LIST;

    System.out.println("list.size()  = " + list.size());

    Set set = Collections.EMPTY_SET;

    System.out.println("set.size()   = " + set.size());

    Map map = Collections.EMPTY_MAP;

    System.out.println("map.size()   = " + map.size());

    // 对于类型安全的示例,请使用以下方法。

    List strings = Collections.emptyList();

    System.out.println("strings.size = " + strings.size());

    Set longs = Collections.emptySet();

    System.out.println("longs.size() = " + longs.size());

    Map dates = Collections.emptyMap();

    System.out.println("dates.size() = " + dates.size());

    }

    }

    输出为:list.size()  = 0

    set.size()   = 0

    map.size()   = 0

    strings.size = 0

    longs.size() = 0

    dates.size() = 0

    展开全文
  • Java新手问题集锦

    千次阅读 2021-03-15 04:20:02
    Java新手问题集锦Java是目前最流行的编程语言之一——它可以用来...优先返回空集合而非如果程序要返回一个不包含任何值的集合,确保返回的是空集合而不是。这能节省大量的'if else'检查。public class getLocationNa...

    Java新手问题集锦

    Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在。以下是百分网小编收集整理的Java新手问题,希望对您有所帮助!

    优先返回空集合而非

    如果程序要返回一个不包含任何值的集合,确保返回的是空集合而不是。这能节省大量的'if else'检查。

    public class getLocationName {

    return (==cityName ? '': cityName);

    }

    谨慎操作字符串

    如果两个字符串在for循环中使用 操作符进行拼接,那么每次循环都会产生一个新的字符串对象。这不仅浪费内存空间同时还会影响性能。类似的,如果初始化字符串对象,尽量不要使用构造方法,而应该直接初始化。比方说:

    避免无用对象

    创建对象是Java中最昂贵的操作之一。因此最好在有需要的时候再进行对象的创建/初始化。如下:

    数组与ArrayList之争

    开发人员经常会发现很难在数组和ArrayList间做选择。它们二者互有优劣。如何选择应该视情况而定。

    数组是定长的,而ArrayList是变长的。由于数组长度是固定的,因此在声明数组时就已经分配好内存了。而数组的操作则会更快一些。另一方面,如果我们不知道数据的大小,那么过多的数据便会导致ArrayOutOfBoundException,而少了又会浪费存储空间。

    ArrayList在增删元素方面要比数组简单。

    数组可以是多维的,但ArrayList只能是一维的。

    try块的finally块没有被执行

    看下下面这段代码:

    从代码来看,貌似finally块中的println语句应该会被执行5次。但当程序运行后,你会发现finally块只执行了4次。第5次迭代的时候会触发exit函数的调用,于是这第5次的finally便永远也触发不到了。原因便是——System.exit会挂起所有线程的执行,包括当前线程。即便是try语句后的finally块,只要是执行了exit,便也无力回天了。

    在调用System.exit时,JVM会在关闭前执行两个结束任务:

    首先,它会执行完所有通过Runtime.addShutdownHook注册进来的终止的钩子程序。这一点很关键,因为它会释放JVM外部的资源。

    接下来的便是Finalizer了。可能是System.runFinalizersOnExit也可能是Runtime.runFinalizersOnExit。finalizer的使用已经被废弃有很长一段时间了。finalizer可以在存活对象上进行调用,即便是这些对象仍在被其它线程所使用。而这会导致不可预期的结果甚至是死锁。

    判断奇数

    看下这几行代码,看看它们是否能用来准确地判断一个数是奇数?

    public boolean oddOrNot(int num) {

    return num % 2 == 1;

    看似是对的,但是每执行四便会有一个错误的结果(用数据说话)。考虑到负奇数的情况,它除以2的结果就不会是1。因此,返回值是false,而这样是不对的。

    代码可以修改成这样:

    public boolean oddOrNot(int num) {

    return (num & 1) != 0;

    }

    这么写不光是负奇数的问题解决了,并且还是经过充分优化过的。因为算术运算和逻辑运行要比乘除运算更高效,计算的结果也会更快。

    单引号与双引号的区别

    看起来这段代码会返回'Haha',但实际返回的是Ha169。原因就是用了双引号的时候,字符会被当作字符串处理,而如果是单引号的话,字符值会通过一个叫做基础类型拓宽的操作来转换成整型值。然后再将值相加得到169。

    一些防止内存泄露的小技巧

    内存泄露会导致软件的性能降级。由于Java是自动管理内存的,因此开发人员并没有太多办法介入。不过还是有一些方法能够用来防止内存泄露的。

    查询完数据后立即释放数据库连接

    尽可能使用finally块

    释放静态变量中的实例

    避免死锁

    死锁出现的原因有很多。避免死锁不是一句话就能解决的。通常来说,当某个同步对象在等待另一个同步对象所拥有的资源上的锁时,便会产生死锁。

    试着运行下下面的程序。它会告诉你什么是死锁。这个死锁是由于两个线程都在等待对方所拥有的资源,因此会产生死锁。它们会一直等待,没有谁会先放手。

    输出:

    但如果调用的顺序变一下的话,死锁的问题就解决了。

    输出:

    替Java省点内存

    某些Java程序是CPU密集型的,但它们会需要大量的内存。这类程序通常运行得很缓慢,因为它们对内存的需求很大。为了能提升这类应用的性能,可得给它们多留点内存。因此,假设我们有一台拥有10G内存的Tomcat服务器。在这台机器上,我们可以用如下的这条命令来分配内存:

    export JAVA_OPTS='$JAVA_OPTS -Xms5000m -Xmx6000m -XX:PermSize=1024m -XX:MaxPermSize=2048m'

    Xms = 最小内存分配

    Xmx = 最大内存分配

    XX:PermSize = JVM启动时的初始大小

    XX:MaxPermSize = JVM启动后可分配的`最大空间

    如何计算Java中操作的耗时

    在Java中进行操作计时有两个标准的方法

    System.currentTimeMillis和System.nanoTime。问题就在于,什么情况下该用哪个。从本质上来讲,他们的作用都是一样的,但有以下几点不同:

    System.currentTimeMillis的精度在千分之一秒到千分之15秒之间(取决于系统)而System.nanoTime则能到纳秒级。

    System.currentTimeMillis读操作耗时在数个CPU时钟左右。而System.nanoTime则需要上百个。

    System.currentTimeMillis对应的是绝对时间(1970年1 月1日所经历的毫秒数),而System.nanoTime则不与任何时间点相关。

    Float还是double

    在对精度要求高的场景下,double类型相对float要更流行一些,理由如下:

    大多数处理器在处理float和double上所需的时间都是差不多的。而计算时间一样的前提下,double类型却能提供更高的精度。

    幂运算

    Java是通过异或操作来进行幂运算的。Java对于幂运算有两种处理方式:

    乘积:

    pow方法:在无法使用乘积的情况下可以使用pow方法。

    double cube = Math.pow(base, exponent);

    不到万不得已不要使用Math.pow。比方说,当指数是小数的时候。因为Math.pow要比乘积慢300-600倍左右。

    如何处理空指针异常

    空指针异常是Java中很常见的异常。当你尝试调用一个对象上的方法时便会抛出这个异常。比如:

    int noOfStudents = school.listStudents.count;

    在上述例子中,school为空或者listStudents为空都可能会抛出了PointerException。因此最好检查下对象是否为空以避免类似情况。

    JSON编码

    JSON是数据存储及传输的一种协议。与XML相比,它更易于使用。由于它非常轻量级以及自身的一些特性,现在JSON在网络上已经是越来越流行了。常见的数据结构都可以编码成JSON然后在各个网页间自由地传输。不过在开始编码前,你得先安装一个JSON解析器。在下面的例子中,我们将使用json.simple库来完成这项工作 (https://code.google.com/p/json-simple/)。

    下面是编码成JSON串的一个简单的例子。

    输出:

    {'Novel Name':'Godaan','Novel Details':['Language: Hindi','Year of Publication: 1936','Publisher: Lokmanya Press'],'Author':'Munshi Premchand'}

    JSON解析

    开发人员要想解析JSON串,首先你得知道它的格式。下面例子有助于你来理解这一点:

    展开全文
  • Java 9之前,有Collections.emptyList(),Collections.emptySet()和Collections.emptyMap(),它们明确地且专门用于生成不可修改的空集合. List.of()等也可以做到这一点是他们的API的内部一致性问题,而不是一个革命性...

    在Java 9之前,有Collections.emptyList(),Collections.emptySet()和Collections.emptyMap(),它们明确地且专门用于生成不可修改的空集合. List.of()等也可以做到这一点是他们的API的内部一致性问题,而不是一个革命性的新功能.

    但你的主要问题似乎是

    Please help me to understand the actual use case of an empty immutable

    list / set / map.

    这真的有三个问题:

    >空集合的用例有哪些?

    空集合很有用,因为它们是现实世界数据和算法中出现的情况的自然表示.例如,“到目前为止哪些乘客已经办理登机手续?”什么都没有.哪些任务等待发送?我可以无休止地继续下去.

    >不可修改的集合有哪些用例?

    可以传递对不可修改集合的引用,而不用担心集合将被修改(无论如何通过该引用).请注意,假设不可修改性得到适当记录,共享该对象的所有参与者都可以依赖它来不改变.除此之外,这对于安全地共享集合(和其他不可修改的对象)而不复制它们非常重要.

    >在这些用例中有哪些用例?

    空集合在现实世界的数据和算法中自然出现,因此大多数用于不可修改集合的用例都包含空集合.

    此外,您没有问过,但可能忽略了这一点,虽然您无法将对象添加到不可修改的空集合中,但您可以将其替换为非空集合,或者在下次提供非空集合时使用,或者类似.

    展开全文
  • java创建集合的常用格式

    千次阅读 2021-02-12 10:52:58
    创建集合的常用格式:导包:import java.util.ArrayList;创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:ArrayList变量名= new ArrayList();集合中存储的元素,只能为<&...
  • 目前看到持有对象这章,说Java中的集合类的。想想自己也用Java有2年多了,这些基础也应该会比较简单。刚看两行,被句话吸引了"Collection.addAll()方法运行起来要快得多"。遂抱着求证的心态写了一些测试用例...
  • Java-快速创建集合方法

    千次阅读 2021-12-29 11:33:00
    种方法使用Collections集合工具类,直接向已知集合中添加元素,返回booleean值,true添加成功false添加失败 List<String> arrayList = new ArrayList<>(); boolean b = Collections.addAll...
  • Java创建初始化List集合的几种方式

    千次阅读 2022-04-20 09:41:34
    1.常规操作 List<Integer> list=new ArrayList<>(); list.add(1); list.add(2);...这种方式构造的List是固定长度的,如果调用add方法增加新的元素,会报异常java.lang.UnsupportedOperationEx
  • Java集合 -- ArrayList集合及应用

    千次阅读 2021-02-26 15:31:37
    JAVA集合对象数组集合类之ArrayList学生管理系统斗地主案例NO.one 对象数组1.1 对象数组描述A:基本类型的数组:存储的元素为基本...Student代表一个自定义类Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Studen...
  • 返回null或空集合更好吗?

    千次阅读 2021-03-16 01:35:19
    这是一个普遍的问题(但是我正在使用C#),最好的方法是什么(最佳实践),对于以集合为返回类型的方法,您是否返回null或空集合?#1楼我想在这里举例说明。在这里考虑一个案例。int totalValue = MySession....
  • java.util.Collections 空集合

    万次阅读 2016-05-09 16:25:46
    Collections.EMPTY_LIST,Collections....的LIST 集合 Collections.EMPTY_MAP,Collections.emptyMap()——返回只读   的MAP集合 Collections.EMPTY_SET,Collections.emptySet()返回只读   的SET集合
  • import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; import java.util...
  • java 删除集合中的元素

    千次阅读 2020-05-05 23:14:51
    java 删除集合中的元素方法方法二方法三 方法 注:下面代码中需要注意的是Arrays.asList Arrays.asList创建的数据为定长集合集合长度在操作时是不可以改变的,不能对集合进行增删操作。 如果操作会抛异常。...
  • 、最常见的初始化方式先创建,再添加元素List从源码可以看出:List 的默认长度为10递增后的长度为先前长度的 1.5 倍最大长度是 Integer.MAX_VALUE,即 2,147,483,647 或 0x7f ff ff ffListlist = new ArrayList<...
  • 目录 java8 stream接口终端操作allMatch 当list为空集合的一些思考、先简单查看源码,快速浏览遍二、详细步骤三、最后的思考 先看下如下代码 public static void main(String[] args) { List<String> ...
  • java集合中存放集合 收集框架 Collection是Java Collection Framework的顶级接口。 List,Queue和Set是此框架的主要子接口。 集合接口是java.util.package的成员。 Collection接口中有几种方法可用于添加/删除元素...
  • java创建线程安全的Set集合

    千次阅读 2021-12-27 14:48:32
    java创建线程安全的Set集合的几种方法的对比:CopyOnWriteArraySet、Collections.synchronizedSet()、Collections.newSetFromMap(new ConcurrentHashMap())、ConcurrentHashMap.newKeySet()
  • java语言之创建对象

    千次阅读 2021-03-15 15:42:50
    主要知识点1. 创建多个对象Dog d1 = new Dog();Dog d2 = new Dog();...每生成一个对象就会在堆内存中占用一块空间,在堆内存占用的地址不一样声明的变量在栈内存开辟一块空间3. 匿名对象的创建和使用方法...
  • Java集合详解(超详细)

    千次阅读 多人点赞 2021-02-02 12:09:47
    集合、数组都是对多数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) 数组存储的特点: 一旦初始化以后,其长度就确定...
  • Java中取多个集合的交集 集合 Collection 接口中定义了 retainAll()方法 retainAll() Retains only the elements in this set that are contained in the specified collection (optional operation). In other ...
  • 本文实例讲述了Java实现过滤掉map集合中key或value为的值。分享给大家供大家参考,具体如下:import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java...
  • Java 空集合使用场景及填坑

    千次阅读 2018-06-21 15:11:21
    今天学学Java中如何创建一个空集合以及空集合的一些使用场景和相关的坑。你可能会问,这好像没有什么好讲的,空集合不就是...一、通过Collections.emptyList()创建空集合Java集合工具类中提供了一系列创建集合的静...
  • Java集合类中的 Set.isEmpty() 方法判断Set集合对象是否包含...语法:isEmpty()示例初始化一个 Set 集合对象,分别向 Set 集合中添加内容,最后输出 isEmpty 方法的返回值。代码如下:public static void main(Stri...
  • 展开全部两种向Set中添加元素的方法,第一种是使用add()方法,每次添加一个元素到set中,当集合中不存在相32313133353236313431303231363533e59b9ee7ad9431333365656630同元素时将添加到集合中,并返回true,当集合中...
  • 目录一、集合容器概述1....10. 怎么确保一个集合不能被修改?二、Collection接口List接口11. 迭代器 Iterator 是什么?12. Iterator 怎么使用?有什么特点?13. 如何边遍历边移除 Collection 中的元素?14.
  • 6种方法初始化JAVA中的list集合

    千次阅读 2021-02-12 18:28:03
    List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。1、常规方式List languages = new ArrayList<>();languages.add("Java...
  • 首先我创建一个测试的类。 这个随意哈。 public class Person { private String name; private String age; private Integer id; public String getName() { return name; } public void setName(String...
  • Java集合学习

    万次阅读 2022-03-31 09:59:47
    集合 集合概述 1.1集合类的特点 提供种存储空间可变的存储模型,存储的数据容量可以随时发生改变。...2.2 创建Collection集合的对象 多态的方式 具体的实现类ArrayList public class Collection
  • Java笔记:Java集合概述和Set集合

    千次阅读 2021-02-26 08:53:09
    本文主要是Java集合的概述和Set集合1.Java集合概述1)数组可以保存多对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这数组长度就是不可变的,如果需要保存数量变化的数据,数组就有点无能为力了;...
  • Java实验05 集合

    千次阅读 2020-11-21 17:33:30
    第七章 集合 实验7-1 Collection接口对集合的操作 一、实验描述 1、 考核知识点 名称:Collection接口 2、 练习目标  掌握Collection接口中方法的使用 3、 需求分析 Collection是所有单列集合...1) 编写一个类Examp

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 271,718
精华内容 108,687
关键字:

java创建一个空集合