随笔 - 1217  文章 - 0  评论 - 999 
随笔分类 - java高级特性
java List 按指定长度分割
摘要:public static <T> List<List<T>> splitList(List<T> list, int groupSize){ int length = list.size(); // 计算可以分成多少组 int num = ( length + groupSize - 1 )/gr 阅读全文
posted @ 2020-03-11 15:47 Ruthless 阅读(2680) 评论(0) 推荐(0) 编辑
AOP统一日志打印处理(系统操作日志通用设计)
摘要:在日常开发工作中,我们免不了要打印很多log。而大部分需要输出的log又是重复的(例如传入参数,返回值)。因此,通过AOP方式来进行日志管理可以减少很多代码量,也更加优雅。 Springboot通过AOP方式(@Aspect)和Javassist优雅地进行日志输出管理。 CREATE TABLE ` 阅读全文
posted @ 2020-01-20 17:21 Ruthless 阅读(603) 评论(0) 推荐(0) 编辑
Centos7通过yum安装jdk8
摘要:1、Centos7通过yum安装jdk8 2、Centos7通过yum安装jdk8 阅读全文
posted @ 2019-09-04 15:44 Ruthless 阅读(4981) 评论(0) 推荐(0) 编辑
List集合中的对象按照某个字段去重实现
摘要:执行结果: 阅读全文
posted @ 2017-10-24 16:43 Ruthless 阅读(10773) 评论(0) 推荐(0) 编辑
Eclipse代码格式化规范
摘要:附件()是Eclipse代码格式文件,根据以下步骤导入到Eclipse中,帮助规范代码格式。 导入步骤:1. Window -> Performances2. Java -> Code Style -> Formatter -> Import3. 选择导入文件,如:java-style.xml 4. 阅读全文
posted @ 2016-12-26 18:10 Ruthless 阅读(2544) 评论(0) 推荐(1) 编辑
Java Collections.sort方法对list集合排序
摘要:1、排序测试类 2、User对象,存储javabean属性 3、多字段排序,基本数字类型要用封装数字类型才可以排序,如:new Double() 阅读全文
posted @ 2016-08-10 14:38 Ruthless 阅读(10125) 评论(0) 推荐(0) 编辑
JavaBean和Map转换封装类
摘要:package com.ljq.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.... 阅读全文
posted @ 2016-05-31 15:46 Ruthless 阅读(15617) 评论(0) 推荐(0) 编辑
Java关系操作符简写
摘要:eq--等于、neq--不等于、lt--小于、lte--小于等于、gt--大于、gte--大于等于、empty、null 阅读全文
posted @ 2016-05-18 14:50 Ruthless 阅读(1891) 评论(0) 推荐(0) 编辑
java 32位MD5加密的大写字符串
摘要:package com.aok.test; import java.security.MessageDigest; public class MD5Test { public static void main(String[] args) { String result = MD5("123456"); System.out.println("result: " + result)... 阅读全文
posted @ 2016-04-12 19:19 Ruthless 阅读(8405) 评论(1) 推荐(0) 编辑
单例模式
摘要:class MyThreadScopeData { // 单例 private MyThreadScopeData() { } // 提供获取实例方法 public static synchronized MyThreadScopeData getThreadInstance() { // 从当前... 阅读全文
posted @ 2015-05-09 22:55 Ruthless 阅读(1835) 评论(0) 推荐(0) 编辑
Java注解入门
摘要:第一部分:了解一下java1.5起默认的三个annotation类型一个是@Override:只能用在方法之上的,用来告诉别人这一个方法是改写父类的。 一个是@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会产生警告信息,可以设定在程序里的所有的元素上. 一个是@Suppre... 阅读全文
posted @ 2015-04-20 15:23 Ruthless 阅读(11507) 评论(0) 推荐(1) 编辑
判断List、Map、Set是否为空及效率比较
摘要://如果object为null,则设置为defaultValueObjectUtils.defaultIfNull(object, defaultValue);//判断集合是否为nullList list=new ArrayList();System.out.println(list.isEmpty()); //trueSystem.out.println(list.size()); //0Set set=new HashSet();System.out.println(set.isEmpty()); //trueSystem.out.println(set.size()); //0Map m 阅读全文
posted @ 2013-11-15 15:51 Ruthless 阅读(88952) 评论(5) 推荐(0) 编辑
RandomStringUtils工具类
摘要://产生5位长度的随机字符串,中文环境下是乱码RandomStringUtils.random(5);//使用指定的字符生成5位长度的随机字符串RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});//生成指定长度的字母和数字的随机组合字符串RandomStringUtils.randomAlphanumeric(5);//生成随机数字字符串Ran 阅读全文
posted @ 2013-11-15 14:52 Ruthless 阅读(22595) 评论(0) 推荐(0) 编辑
StringUtils工具类用法
摘要:/*1.字符串以prefix开始*/StringUtils.startsWith("sssdf","");//结果是:trueStringUtils.startsWith("sssdf","");//结果是:trueStringUtils.startsWith("sssdf","s");//结果是:trueStringUtils.startsWith("sssdf","ss");//结果是:trueStringUtils.startsW 阅读全文
posted @ 2013-11-15 14:29 Ruthless 阅读(36412) 评论(1) 推荐(4) 编辑
NumberUtils、ArrayUtils和RandomUtils工具类用法
摘要:一、NumberUtils工具类/*1.NumberUtils.isNumber():判断字符串是否是数字*/NumberUtils.isNumber("5.96");//结果是trueNumberUtils.isNumber("s5");//结果是falseNumberUtils.isNumber("0000000000596");//结果是true/*2.NumberUtils.isDigits():判断字符串中是否全为数字*/NumberUtils.isDigits("0000000000.596");//f 阅读全文
posted @ 2013-11-14 19:14 Ruthless 阅读(13419) 评论(0) 推荐(0) 编辑
BigDecimal用法详解
摘要:一、简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。二、构造器描述 Big 阅读全文
posted @ 2013-11-08 11:08 Ruthless 阅读(154782) 评论(3) 推荐(8) 编辑
Java堆栈解析
摘要:1、RAM和ROM区别RAM-RamdomAccessMemory随机存取存储器(断电后数据会丢失),高速存取,读写时间相等,且与地址无关,如计算机内存等。 ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。2、栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。3、栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的 阅读全文
posted @ 2013-07-22 09:25 Ruthless 阅读(2768) 评论(0) 推荐(1) 编辑
String.format()用法
摘要:package junit.test;import java.util.Date;import java.util.Locale;import org.junit.Test;public class StringFormat {/*String.format()用法1、转换符%s: 字符串类型,如:"ljq"%b: 布尔类型,如:true%d: 整数类型(十进制),如:99%f: 浮点类型,如:99.99%%: 百分比类型,如:%%n: 换行符*/@Testpublic void test1(){String str=null;str=String.format(" 阅读全文
posted @ 2013-06-21 11:42 Ruthless 阅读(155221) 评论(0) 推荐(3) 编辑
java常用集合总结
摘要:1、线程安全 线程安全就是说多线程访问同一代码,不会产生不确定的结果。2、List类和Set类List类和Set类是Collection集合接口的子接口。Set子接口:无序,不允许重复。List子接口:有序,可以有重复元素。Set和List对比: Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。 Set和List具体子类: Set |————HashSet:以哈希表的形式存放元素,插入删除速度很快。 List |————ArrayL... 阅读全文
posted @ 2013-05-30 11:27 Ruthless 阅读(15235) 评论(0) 推荐(4) 编辑
java.util.Queue用法
摘要:队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。Queue使用时要尽量避免Collection的add()和remove()方法,而是 阅读全文
posted @ 2013-05-30 10:38 Ruthless 阅读(61130) 评论(2) 推荐(6) 编辑
java中Comparator的用法
摘要:在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。接下来我们模拟下在集合对象中对日期属性进行排序一、实体类Steppackage com.ljq.entity;/** * 运号单流程 * * @author Administrator * */public class Step{ /** 处理时间 */ private String acceptTime = ""; /** 快件所在地点 */ private String acceptAddress = ""; public Step() { ... 阅读全文
posted @ 2011-08-31 10:11 Ruthless 阅读(116458) 评论(5) 推荐(9) 编辑
socket案例二
摘要:编写一个网络应用程序,有客户端与服务器端,客户端向服务器端发送一个字符串,服务器收到该字符串后将其打印到命令行上,然后向客户端返回该字符串的长度,最后,客户端输出服务器端返回的该字符串的长度。 服务器端package com.hrtx.test;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端:响应请求 * * * @author jiqinlin * */public class ServerTest { p 阅读全文
posted @ 2011-06-24 21:52 Ruthless 阅读(1564) 评论(0) 推荐(1) 编辑
socket案例一
摘要:编写一个网络应用程序,有客户端与服务器端;当客户端向服务器端发送请求时,客户端输出服务器端返回的字符串。 回顾下socket的开发步骤:1) 建立Socket连接2) 获得输入/输出流3)读/写数据4) 关闭输入/输出流5) 关闭Socket 服务器端package com.hrtx.test;import java.io.DataOutputStream;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端:响应请求 * * Unrecognized Windows Sockets error: 0: JVM_Bind- 阅读全文
posted @ 2011-06-24 21:03 Ruthless 阅读(1713) 评论(1) 推荐(1) 编辑
Java网络编程
摘要:课前思考1. 什么是TCP/IP协议?2. TCP/IP有哪两种传输协议,各有什么特点?3. 什么是URL?4. URL和IP地址有什么样的关系?5. 什么叫套接字(Socket)?6. 套接字(Socket)和TCP/IP协议的关系?7. URL和套接字(Socket)的关系?8.1 网络编程基本概念,TCP/IP协议简介8.1.1 网络基础知识 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由 阅读全文
posted @ 2011-06-10 08:53 Ruthless 阅读(23819) 评论(6) 推荐(8) 编辑
java.lang.OutOfMemoryError: Java heap space解决方法
摘要:引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因根据网上的答案大致有以下两种解决方法:1、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了, 就是说set JAVA_OPTS=-Xms384m -Xmx384m没起作用 2、在Eclilpse中修改启动参数,在VM ar 阅读全文
posted @ 2011-04-27 10:44 Ruthless 阅读(186754) 评论(4) 推荐(3) 编辑
文件操作工具类
摘要:文件操作工具类package com.ptn.utils;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWrite 阅读全文
posted @ 2011-04-21 10:13 Ruthless 阅读(6089) 评论(7) 推荐(3) 编辑
JAVA通过调用数据库函数调用存储过程
摘要:下面将举一个通过数据库函数来调用存储过程:创建数据库函数存储过程CREATE OR REPLACE FUNCTION stu_proc ( v_id IN NUMBER) RETURN VARCHAR2 IS v_name VARCHAR2(20);BEGIN SELECT o.sname INTO v_name FROM student o WHERE o.id=v_id; RETURN v_name;EXCEPTION WHEN OTHERS THEN RETURN '数据未找到';END; JAVA通过调用数据库函数调用存储过程package com.ljq.test;i 阅读全文
posted @ 2011-04-17 21:53 Ruthless 阅读(4175) 评论(1) 推荐(1) 编辑
JAVA调用增删改的存储过程
摘要:1、创建添加存储过程CREATE OR REPLACE PROCEDURE stu_proc(v_id IN NUMBER, v_name IN VARCHAR2, v_age IN NUMBER) ASBEGIN INSERT INTO student(id, sname, age) values (v_id, v_name, v_age); commit;END; JAVA调用添加存储过程package com.ljq.test;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.SQLE 阅读全文
posted @ 2011-04-17 20:06 Ruthless 阅读(3114) 评论(0) 推荐(1) 编辑
JAVA调用数据库存储过程
摘要:下面将举出JAVA对ORACLE数据库存储过程的调用 ConnUtils连接工具类:用来获取连接、释放资源package com.ljq.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * 连接工具类 * * ConnUtils类声明为final类说明此类不可以被继承 * * @author jiqinlin * */public final clas 阅读全文
posted @ 2011-04-17 17:47 Ruthless 阅读(25610) 评论(0) 推荐(2) 编辑
多线程案例
摘要:1、写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。学习线程之间的通信协调关系。代码线程类Thread01package com.ljq.test;public class Thread01 implements Runnable { private Object obj; public Thread01(Object obj) { this.obj = obj; } public void run() { synchronized (obj) { for (int i = 1; i <= 26; i++) { System.out 阅读全文
posted @ 2011-04-14 17:03 Ruthless 阅读(2460) 评论(0) 推荐(1) 编辑
中断线程
摘要:本文转自http://jiangzhengjun.iteye.com/blog/652269中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程为中断状态,即设置为true。线程中断后的结果是死亡、还是等待新的任务或是继续运行至下一步,取决于这个程序本身。线程会不时地检测这个中断标识位,以判断线程是否应该被中断(中断标识值是否为true)。它并不像stop方法那样会中断一个正在运行的线程。判断线程是否被中断判断某个线程是否已被中断,请使用Thread.currentThread().isInterrupted()方法(因为它将线程中断标识位设置为true后,不会立刻 阅读全文
posted @ 2011-04-11 17:04 Ruthless 阅读(14115) 评论(3) 推荐(3) 编辑
分析两种实现多线程的方式:Thread类和Runnable接口
摘要:写一个程序,模拟4个售票窗口共同卖100张火车票的程序。 1:使用继承Thread类方式实现()。2:使用实现Runnable接口方式实现()。 第一种方式(没有共享数据,售票窗口各自买100张票,那4个售票窗口就有400张票) package com.ljq.test;/** * 使用Thread 阅读全文
posted @ 2011-04-10 20:41 Ruthless 阅读(13654) 评论(4) 推荐(2) 编辑
Java线程中run和start方法的区别
摘要:Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程; package com.ljq.test;public class ThreadTest { /** * 观察直接调用run()和用start()启动一个线程的差别 * * @param args * @throws Exception */ public static void main(String[] args){ Thread thread= 阅读全文
posted @ 2011-04-10 13:20 Ruthless 阅读(59918) 评论(3) 推荐(3) 编辑
java一行一行写入或读取数据
摘要:假如E:/phsftp/evdokey目录下有个evdokey_201103221556.txt文件,现在对evdokey_201103221556.txt文件进行写入或读取操作,并解决写入或读取出现的乱码问题。 文件内容如:zhangsan,23,福建 lisi,30,上海 wangwu,43,北京 laolin,21,重庆 ximenqing,67,贵州 代码如下: /** * 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码 * * 流的关闭顺序:先打开的后关,后打开的先关, * 否则有可能出现java.io.IOException: Stream closed异常 * * @ 阅读全文
posted @ 2011-03-23 11:12 Ruthless 阅读(83868) 评论(1) 推荐(4) 编辑
Java动态代理三——模拟AOP实现
摘要:以下案例模拟AOP实现目录结构接口PersonService[代码]实现类PersonServiceBean[代码]动态代理类JDKProxyFactory[代码]动态代理类CGlibProxyFactory:使用CGLIB技术[代码]测试类AopTest[代码]运行结果 阅读全文
posted @ 2011-02-18 16:36 Ruthless 阅读(2651) 评论(0) 推荐(1) 编辑
Java动态代理二——CGLIB动态代理应用
摘要:JDK自从1.3版本开始,就引入了动态代理,JDK的动态代理用起来非常简单,但是它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的类可以使用CGLIB包。  CGLIB是一个强大的高性能的代码生成包。它被许多AOP的框架(例如Spring AOP)使用,为他们提供方法的interception(拦截)。Hibernate也使用CGLIB来代理单端single-ended(多对一和一对一)关联。EasyMock通过使用模仿(moke)对象来测试java代码的包。它们都通过使用CGLIB来为那些没有接口的类创建模仿(moke)对象。  CGLIB包的底层是通过使用 阅读全文
posted @ 2011-02-18 11:53 Ruthless 阅读(11145) 评论(4) 推荐(3) 编辑
Java动态代理一——动态类Proxy的使用
摘要:1.什么是动态代理? 答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。2.为什么使用动态代理? 答:因为动态代理可以对请求进行任何处理3.使用它有哪些好处? 答:因为动态代理可以对请求进行任何处理4.哪些地方需要动态代理?答:不允许直接访问某些类;对访问要做特殊处理等目前Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 其实现主要通过java.lang. 阅读全文
posted @ 2011-02-18 10:52 Ruthless 阅读(57448) 评论(6) 推荐(6) 编辑
Java注解Annotation详解
摘要:注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。自定义注解及其应用1)、定义一个最简单的注解public @interface MyAnnotation { //......}2)、把注解加在某个类上:@MyAnnotation public class AnnotationTest{ //......}以下为模拟案例自定义注解@MyAnnotation[代码]注解测试类An 阅读全文
posted @ 2011-02-16 20:55 Ruthless 阅读(55163) 评论(5) 推荐(5) 编辑
Java内省IntroSpector应用
摘要:内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种缺省处理方法。例如类A中有属性name, 那我们可以通过getName,setName 来得到其值或者设置新的值。通过getName/setName 来访问name属性,这就是默认的规则。Java中提供了一套API 用来访问某个属性的getter/setter方法,通过这些API 可以使你不需要了解这个规则,这些API存放于包java.beans 中。一般的做法是通过类Introspector的getBeanInfo方法获取某个对象的BeanInfo 信息,然后通过BeanInfo来获取属性的描述器(Prope 阅读全文
posted @ 2011-02-16 17:05 Ruthless 阅读(6199) 评论(0) 推荐(1) 编辑
框架的概念及用反射技术开发框架的原理<br/>getResourceAsStream用法详解
摘要:反射的作用—>实现框架的功能框架-用户类-工具类:框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。框架要解决的核心问题:框架如何调用未知的类:通过反射来实现综合案例: 使用配置文件读取调用类的名字工程目录ReflectTest测试类[代码]config.properties配置文件[代码]getResourceAsStream用法大致有以下几种:[代码] 阅读全文
posted @ 2011-02-14 20:51 Ruthless 阅读(6256) 评论(0) 推荐(1) 编辑
Java通过反射机制获取Class对象
摘要:Java反射机制四种获取Class对象的方法[代码]Customer类[代码] 阅读全文
posted @ 2011-02-13 20:03 Ruthless 阅读(16334) 评论(0) 推荐(1) 编辑
Java反射机制深入研究
摘要:Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflectio... 阅读全文
posted @ 2011-02-13 16:47 Ruthless 阅读(4138) 评论(1) 推荐(4) 编辑
java枚举使用详解
摘要:在实际编程中,往往存在着这样的&ldquo;数据集&rdquo;,它们的数值在程序中是稳定的,而且&ldquo;数据集&rdquo;中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的&ldquo;数据集&rdquo;,春夏秋冬四个数据元素组成了四季的&ldquo;数据集&rdquo;。在java中如何更好的使用这些&ldquo;数据集&rdquo;呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。[代码] 阅读全文
posted @ 2011-02-11 21:00 Ruthless 阅读(223865) 评论(14) 推荐(31) 编辑
Java拆箱装箱小结
摘要:http://macemers.javaeye.com/blog/860631 阅读全文
posted @ 2011-02-10 21:13 Ruthless 阅读(1132) 评论(0) 推荐(1) 编辑
Java常用集合比较
摘要:1. ArrayList 基于数组方式实现,无容量的限制。 在执行插入元素时可能要扩容,在删除元素时并不会减少数组的容量。 如果希望相应的缩小数组容量,可以调用trimToSize() 在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。 非线程安全。 2. LinkedList 基于双向链表机制实现。 元素的插入、移动较快。 非线程安全。 3. Vector 基于Object数组的方式来实现的。 基于synchronized实现的线程安全的ArrayList。 在插入元素时容量扩充的机制和ArrayList稍有不同: 如果capcacityIncr 阅读全文
posted @ 2011-02-10 20:36 Ruthless 阅读(2787) 评论(0) 推荐(1) 编辑
增强for循环用法
摘要:1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。下面的例子可以证明[代码]使用ArrayList运行结果如下把ArrayList改为LinkedList,我这里内存溢出了,运行结果如下于是list改成50000,运行结果如下所以在使用的时候适当选择就 阅读全文
posted @ 2011-02-10 20:22 Ruthless 阅读(55581) 评论(1) 推荐(5) 编辑
Java可变参数的使用
摘要:Java1.5增加了新特性:可变参数。适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项[代码] 阅读全文
posted @ 2011-02-10 19:31 Ruthless 阅读(2054) 评论(0) 推荐(2) 编辑