1、string.split()
项目中取小数的整数部分,然后用string.split(.)死活不对,搜了一下才知道,需要这样string.split("\\.")才可以。
类似的还有|,如果用|分割,必须用string.split("\\|")才可以。
原因是:“.”和“|”都是转义字符,必须得加"\\";split的参数是一种匹配模式,不是简单的字符串,一些特殊的字符可能都不能得到想要的结果。
把 X:/upload/MBGL\ea9f9de3293e48babb1219adbc3b1ddf 分成几个多个字符串,分别是MBGL/ ,ea9f9de3293e48babb1219adbc3b1ddf ,然后把地址中的\换成/
X:/upload/MBGL\ea9f9de3293e48babb1219adbc3b1ddf
String temp[] = templatePath.split("\\\\");
String remotPath = (temp[0]).split("/")[2]+"/";//"MBGL/";
String fileName = temp[1];
String localPath = templatePath.replace("\\","/" );
2、ArrayList和LinkedList
近日用到往前追加元素,在最后追加元素,所以着重比较了这个方面,代码如下:
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("1");
al.add("2");
System.out.println(al.toString());
al.add(0, "0");
System.out.println(al.toString());
al.add(0, "-1");
System.out.println(al.toString());
al.add("3");
System.out.println(al.toString());
al.add(1, "xx");
System.out.println(al.toString());
System.out.println("-----------------------");
LinkedList<String> ll = new LinkedList<String>();
ll.add("1");
ll.add("2");
System.out.println(ll.toString());
ll.add(0, "0");
System.out.println(ll.toString());
ll.addFirst("-1");
System.out.println(ll.toString());
ll.add("3");
System.out.println(ll.toString());
ll.addLast("10");
System.out.println(ll.toString());
}
[1, 2]
[0, 1, 2]
[-1, 0, 1, 2]
[-1, 0, 1, 2, 3]
[-1, xx, 0, 1, 2, 3]
-----------------------
[1, 2]
[0, 1, 2]
[-1, 0, 1, 2]
[-1, 0, 1, 2, 3]
[-1, 0, 1, 2, 3, 10]
以上代码的运行结果如下,通过结果可以看到,ArrayList和LinkedList都可以达到目的,原本以为ArrayList在某个位置追加元素会覆盖原来此位置的元素,结果并没有覆盖,达到了我想要的效果。
总结如下:
1、都是有序的。
2、都可以向前或者向后追加元素,不会覆盖原来此位置的元素,而是把原来此位置以及后边的元素往后移动。
3、虽然效果相同,但效率不同。ArrayList往特定位置追加元素,效率低,因为ArrayList是基于动态数组的结构,把特定位置及以后的元素往后移动效率低下;LinkedList因为是链表结构,所以往任意位置追加元素都是一样的,效率很高。
4、随机访问效率不同。ArrayList根据索引随机访问,遍历效率高,LinkedList随机访问,遍历效率低,因为要移动指针。
5、如果要频繁的追加删除元素,LinkedList效率高;如果遍历频繁,ArrayList效率高。
3、Map、HashMap、TreeMap、Hashtable、LinkedHashMap
最近用到map,但是还希望是有顺序的,搜了之后发现LinkedHashMap是有序的,记录一下。
HashMap:
最常用的map,以键值对的方式保存数据,具有很快的访问速度,最多允许一个键为null(多了覆盖),可以允许多个值为null。非同步。
TreeMap:
能够按照保存记录的key进行排序,默认升序,也可以指定排序的比较器。不允许key为null,非同步。
Hashtable:
key和value都不允许为null,支持线程同步,即任意一个时刻,只能有一个线程写Hashtable,所以写入速度慢。
LinkedHashMap:
记录了数据的插入数据,key和value都允许为null,非同步的,遍历速度比HashMap慢。