|
东方瑞通从事IT培训十多年,拥有优质的教学环境和一流的配套设施,作为国内IT 高级培训的领军企业之一,东方瑞通拥有十余个IT 主流厂商的授权培训资质,为数千家企业客户提供员工外派(公开课)和团体定制培训,专家级IT 外包服务,累计培训IT 专业人才数万名。 1.检测一个Array是否包含一个元素
一般开发者喜欢用:
1. Set<String> set = new HashSet<String>(Arrays.asList(arr)); 2. return set.contains(targetValue); 这段代码能够工作,但并没有先转将list转为set,list转为set需要额外时间,可以用下面更简单的:
1. Arrays.asList(arr).contains(targetValue); 或者
1. for(String s: arr){ 2. if(s.equals(targetValue)) 3. return true; 4. } 5. return false; 第一种方法比第二种的可读性更好。
2.Hashtable vs HashMap
在算法中,哈希表是数据结构的名称。但在Java中,数据结构的名字是HashMap中。其中一个Hashtable和HashMap的之间的主要区别是,Hashtable是同步的。所以,很多时候,你并不需要哈希表,HashMap就够用了。
3.使用原始类型的集合
在Java中,原始类型和无界通配符类型很容易混在一起。以Set为例,设定为原始类型,同时set<?>是无界的通配符类型。
使用原始类型list,考虑下面的情况:
1. public static void add(List list, Object o){ 2. list.add(o); 3. } 4. public static void main(String[] args){ 5. List<String> list = new ArrayList<String>(); 6. add(list, 10); 7. String s = list.get(0); 8. } 这个代码将会抛出错误:
1. Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 2. at ... 使用原始类型集合是很危险的一件事,因为它跳过了类属性检测并且是不安全的。Set, Set<?>, andSet
4.访问权限
很多开发者使用public修饰类的字段,这样很容易获取字段值,但这是一个糟糕的设计。经验法则是给用户尽可能低的访问权限。
5.ArrayListvs. LinkedList
大部分的开发者并不知道ArrayList和LinkedList 的区别,所以经常使用ArrayList,这个看起来更熟悉。但是,在这两者之间,有一个很大的性能差异。
简单来说,在有很多插入和删除操作时,同时有很少或者几乎没有随机访问的操作情况下,推荐使用LinkedList。其次,再使用ArrayList。
6.”"or Constructor?
创建一个String 有两种方式:
//1. use double quotes
String x = "abc";
//2. use constructor
String y = new String("abc");
区别是什么?
1. String a = "abcd"; 2. String b = "abcd"; 3. System.out.println(a == b); // True 4. System.out.println(a.equals(b)); // True 5. 6. String c = new String("abcd"); 7. String d = new String("abcd"); 8. System.out.println(c == d); // False 9. System.out.println(c.equals(d)); // True
|
|