1.对象与对象变量
(1)在Java中,任何对象变量的值都是对存储在另外一个地方的的对象的引用。new 操作符的返回值也是一个引用。
Date deadline = new Date();
两部分:表达式 new Date() 构造了一个Date类型的对象,并且它的值是对新创建对象的引用。
(2)局部变量不会自动地初始化为null,而必须通过调用new 或将它们设置为null进行初始化。
2.如何分割(split)string字符串
使用方法
如下所示:
String string = "004-034556";String[] parts = string.split("-");String part1 = parts[0]; // 004String part2 = parts[1]; // 034556
需要注意的是,该方法的参数是个,要注意对某些字符做转码。例如,.
在正则表达式中表示任意字符,因此,如果你要通过.
号做分割,需要这样写,split("\\.")
或者split(Pattern.quote("."))
如果只是为了验证字符串中是否包含某个字符,使用方法就行。注意该方法的参数,不是正则表达式。
3.Map<Key,Value>
基于Value值排序
方法1:
使用TreeMap,可以参考下面的代码
public class Testing { public static void main(String[] args) { HashMapmap = new HashMap (); ValueComparator bvc = new ValueComparator(map); TreeMap sorted_map = new TreeMap (bvc); map.put("A",99.5); map.put("B",67.4); map.put("C",67.4); map.put("D",67.3); System.out.println("unsorted map: "+map); sorted_map.putAll(map); System.out.println("results: "+sorted_map); } } class ValueComparator implements Comparator { Map base; public ValueComparator(Map base) { this.base = base; } // Note: this comparator imposes orderings that are inconsistent with equals. public int compare(String a, String b) { if (base.get(a) >= base.get(b)) { return -1; } else { return 1; } // returning 0 would merge keys } }
译注:如果不自己写Comparator,treemap默认是用key来排序
方法2:
先通过linkedlist排好序,再放到LinkedHashMap中
public class MapUtil { public static> Map sortByValue( Map map ) { List > list = new LinkedList >( map.entrySet() ); Collections.sort( list, new Comparator >() { public int compare( Map.Entry o1, Map.Entry o2 ) { return (o1.getValue()).compareTo( o2.getValue() ); } } ); Map result = new LinkedHashMap (); for (Map.Entry entry : list) { result.put( entry.getKey(), entry.getValue() ); } return result; } }
译注:这两种方法,我简单测试了下,如果map的size在十万级别以上,两者的耗时都是几百毫秒,第二个方法会快一些。否则,第一个方法快一些。因此,如果你处理的map,都是几十万级别以下的大小,两种方式随意使用,看个人喜欢了。