java 杂记
- Arrays.sort()实现对引用类型数组的排序 ,两种方案:
- 该类实现comparable接口,直接调用Arrays.sort(ps);
- 定义一个比较器实现comparator接口,调用sort方法时传入比较器,Arrays.sort(ps,new PersonComparetor());
- Arrays.asList可以将数组转换为list
- Date d = new Date–> Calendar c = new GregorianCalendar();Date转Calendar
- 创建打酱油对象new GregorianCalendar()对象,
- 调用setTime(Date d)即:c.setTime(d)
- Calendar c = new GregorianCalendar() --> Date d = new Date;Calendar转Date
- d = c.getTime();
-
List 元素绑定下标,元素可重复,长度可变
-
ArrayList 底层数组实现,线程不安全,访问和设置效率高,删除和插入效率低。
-
LinkedList 底层是用双向向链表实现,线程不安全,和ArrayList相比,访问设置效率低,删除和插入效率高。
-
Vector:底层用数组实现,线程安全
数组转List: Arrays.asList(T…a)
List转数组:toArray() || toArray(T[] a)
遍历List
- for
- for each
- Iterator
-
private static void test2() {
List list = new ArrayList<Teacher>();
for (int i = 1; i <= 5 ; i++){
Teacher teacher = new Teacher("teacher"+i, 10*i);
list.add(teacher);
}
System.out.println("list遍历:");
for (int i = 0; i < list.size(); i++) {
System.out.println( list.get(i));
}
System.out.println("*********for each************");
for (Object object : list) {
System.out.println(object);
}
System.out.println("***********Iterator ***************");
Iterator it = list.iterator();
while(it.hasNext()){
System.out.print(" "+it.next());
}
System.out.println("***********Iterator逆序输出 ***************");
ListIterator it2 = list.listIterator(list.size());
while(it2.hasPrevious()){
System.out.print(" "+it2.previous());
}
}
-
Set 元素没有下标,且不能重复,长度可变
- HashSet:底层是用hashtable实现的,通常情况下HashSet各操作比TreeSet效率高。
- TreeSet:自定义类型-作为set元素时,需要重写object hashcode和equals
Set遍历
- for each
- Itraretor
-
Map 值绑定键,存储键值对;长度可变(键可以是任意类型值,且不能重复,但值可以重复)
- HashMap:底层数组加单向链表实现的,【线程不安全】,通常使用HashMap,性能比TreeMap好。【键和值都可以是null】
- TreeMap:底层红黑树实现的。好处-》自动对添加的键值对排序。
- Hashtable:底层数组加单向链表实现的,【线程安全】【键和值都不能是null】
- Properties(讲了流说):继承了Hashtable,新增api(set…get.store…load)
boolean containsKey(Object key) ; boolean containsValue(Object value)
Map遍历
-
遍历所有的值
map.values
-
遍历所有的键
map.keySet 可以通过键找到值-》map.get
-
遍历所有的键和值
entrySet() 一个【Map.Entry的对象】包含一个键和对应的值
getKey() --获取【键值对】的键
getValue()–获取【键值对】的值