1.数组转换成list
将数组转成成List一般使用Arrays.asList()这个方法。
List<String> staticList = Arrays.asList(strArray);
查看源代码可以看到,这里生成的List是Arrays的内部静态类,这个List继承了了AbstractList,但有一些方法没有实现。比如add,delete方法。所以这里直接生成的不能对List的大小进行改变。如果直接调用add或者其他方法会抛出:UnsupportedOperationException()。
那么,如何才能将数组转换成List并且可以进行更改列表大小呢?
可以直接这样使用:
List<String> arrayList = new ArrayList(Arrays.asList(strArray));
将两个list输出Class可以见到不一样的结果。
System.out.println(staticList.getClass());
System.out.println(arrayList.getClass());
输出:
class java.util.Arrays$ArrayList
class java.util.ArrayList
2.从List删除元素
先来看看两种错误的删除元素方法。
第一种情况会抛出异常ConcurrentModificationException
@Test public void rmFromListFail() { //It will throw out ConcurrentModificationException. ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d")); for (String s : list) { if (s.equals("a")) list.remove(s); } }
这一种情况会得到错误的结果。
@Test public void rmFromListFail1() { ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d")); for (int i = 0; i < list.size(); i++) { list.remove(i); } System.out.println(list); }
成功的方法,使用Iterator
@Test public void rmFromListOK(){ ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d")); Iterator<String> iter = list.iterator(); while (iter.hasNext()) { String s = iter.next(); if (s.equals("a")) { iter.remove(); } } System.out.println(list);
上面两个问题是我从
http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/
这里挑选出来的,还有其他的问题大家可以看一下。
相关推荐
众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相 同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。
5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j2ee平台与dotnet平台的区别 9.ejb的life cycle 10.session bean 和 entity bean的区别 11.ejb中的transaction机制 ...
创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ ...
在很多地方都可以用的 这是一个通用的汉字转换拼音 只要写几换代码就可以了 说的再好也不如下个用用JAVA做的
描述java基础容易忽略的问题,如下面几个知识点: int a = 1;1会存放在栈里 String s1 = "thanks";thanks会存放在data segment里 String s2 = new String("thanks");thanks会存放在data segment里 String a ="th...
嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣、而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看…… 2. 准备一下 请不要把你的学习Java之路和其它计算机技术分开...
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
我们毕业生如何在面试前对以上几个方面多加了解和练习,一定会在面试中取得良好的效果,在求职中获得成功 ************************** end 1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与...
Java根据星期英文的首字母判断星期几,请输入星期几的英文单词的第一个字母,程序即可判断出是星期几,如果第一个字母一样,则继续判断第二个字母。当输入小写字母时,利用switch结构特性执行下一个带break语句的...
本资源提供了一套基于Java的自...这些文件详细展示了如何使用Java、JavaScript、Shell、CSS和HTML等技术构建一个分布式小文件存储系统,该系统支持存储几KB到几百MB之间的文件,非常适合用于学习和参考Java项目的开发。
答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法要求程序员去一一捕获并抛出,一般异常是Java类库或程序员自己写的代码发生的错误,这类异常可以由我们去一一捕获并...
对构建器的定义要涉及函数过载的概念(因为可能同时有几个构建器)。随后要讨论的是清除过程,它并非肯定如想象的那么简单。用完一个对象后,通常可以不必管它,垃圾收集器会自动介入,释放由它占据的内存。这里详细...
创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个...
在处理异常时,有几个最佳实践需要遵循。首先,只捕获您知道如何处理的异常,避免捕获所有异常。其次,根据具体情况选择适当的处理方式,例如记录日志、重新尝试操作或返回错误信息。此外,使用finally块释放占用的...
1.5 编程过程的几个阶段 1.6 Java和面向对象范例 1.7 Java和WWW 1.8 小结 1.9 复习题 第2章 编程示例 2.1 “Hello world”程序 2.2 编程过程的观点 2.3 两数相加的程序 2.4 编程习语和模式 2.5 ...
在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1....
此包包括了几个小的、已标准化的可扩展框架,以及一些提供有用功能的类,没有这些类,这些功能会很难实现或实现起来冗长乏味。课程从技术原理和细节上,进行非常详细的解读,是目前听过关于JUC企业级高并发最专业的...
四种元注释:java.lang.annotation中的类 元注释:注释注释的注释,用来限定注释的特征 @Terget 用来限定某个注释的使用范围,可以对什么元素进行注释 @Retention 用来描述注释的有效范围 @Inherited ...
完成Java面向对象程序设计实验课的心得体会 Java面向对象程序设计实验课的心得体会 经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中...