本章节是基于实例练习一与练习二的练习实例:
以下是string的常用判断,在实际开发中,经常使用到。
1 isNotEmpty(str)等价于 str != null && str.length > 0
2 isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0
3 同理
4 isEmpty 等价于 str == null || str.length == 0
5 isBlank 等价于 str == null || str.length == 0 || str.trim().length == 0
6 str.length > 0 && str.trim().length > 0 ---> str.length > 0
package cn.arrays;
import java.util.ArrayList;
public class ArrayList2 {
public static void main(String[] args) {
//创建一个arraylist集合,遍历arrayList集合
ArrayList list = new ArrayList();
list.add("加油");
list.add("努力");
list.add("奋斗");
list.add("自信");
System.out.println("arrayList集合遍历,方法一");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("arrayList集合遍历,方法二");
for (String a : list) {
System.out.println(a);
}
}
}
以上输出结果:
arrayList集合遍历,方法一
加油
努力
奋斗
自信
arrayList集合遍历,方法二
加油
努力
奋斗
自信
package cn.collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class TestMap2 {
public static void main(String[] args) {
Map map = new HashMap();
map.put(1, "努力");
map.put(2, "加油");
map.put(3, "奋斗");
map.put(4, "自信");
map.put(5, "永不放弃");// 和上面相同 , 会自己筛选
System.out.println("size的大小"+"...."+map.size());
System.out.println("第一种:通过Map.keySet遍历key和value:");
for (Integer in : map.keySet()) {
//map.keySet()返回的是所有key的值
String str = map.get(in);//得到每个key多对用value的值
System.out.println(in + " " + str);
}
// 第二种:
System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:");
Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
// 第三种:推荐,尤其是容量大时
System.out.println("第三种:通过Map.entrySet遍历key和value");
for (Map.Entry entry : map.entrySet()) {
//Map.entry 映射项(键-值对) 有几个方法:用上面的名字entry
//entry.getKey() ;entry.getValue(); entry.setValue();
//map.entrySet() 返回此映射中包含的映射关系的 Set视图。
System.out.println("key= " + entry.getKey() + " value= "
+ entry.getValue());
}
// 第四种:
System.out.println("第四种:通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
//增强for一定要掌握,使用keySet
System.out.println("这个一定要掌握,使用keySet");
for (Integer a : map.keySet()) {
System.out.println(a + " " + map.get(a));
}
}
}
以上输出的结果为:
size的大小....5
第一种:通过Map.keySet遍历key和value:
1 努力
2 加油
3 奋斗
4 自信
5 永不放弃
第二种:通过Map.entrySet使用iterator遍历key和value:
key= 1 and value= 努力
key= 2 and value= 加油
key= 3 and value= 奋斗
key= 4 and value= 自信
key= 5 and value= 永不放弃
第三种:通过Map.entrySet遍历key和value
key= 1 value= 努力
key= 2 value= 加油
key= 3 value= 奋斗
key= 4 value= 自信
key= 5 value= 永不放弃
第四种:通过Map.values()遍历所有的value,但不能遍历key
value= 努力
value= 加油
value= 奋斗
value= 自信
value= 永不放弃
这个一定要掌握,使用keySet
1 努力
2 加油
3 奋斗
4 自信
5 永不放弃
1.线程安全的是vertor和HashTable。
2. List:允许重复的,全部有序(允许null)。
3.Set: HashSet无序的表现(一个null),其中HashSet的子类LinkedHashSet有序,TreeSet有序。
4.Map:HashMap无序的表现(一次null),其中HashMap的子类LinkedHashMap有序,TreeMap有序,HashTable无序(不能为null)。
5.ArrayList:查询效率高,增删效率低。
6.LinkedList:查询效率低,增删效率高。
7.Vertor:执行效率非常低。
8.HashSet:良好的增删查询性能。
9.LinkedHashSet:查询效率低,插入效率比HashSet低。
10.Map对象高于List。因为Map除了Value外还需要一个Object的Key,从而增大了Map的容量。
11. HashSet,HashMap的元素都是无序的,而他们的子类都是有序的,双向链表,非常类似,因为HashMap中的唯一的约束就是key,而 key恰恰是被HashMap维护的
12.TreeSet和TreeMap都是有序的,两个很类似。
13. 如果Map知道了Key,List知道了index,其性能在一百万条数据中无多大差别。
14.List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于 Set,而不关心它的序否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的 顺序。如果添加元素的顺序对你很重要,应该使LinkedHashSet或者LinkedHashMap。
15.HashMap就是使用对象的hashCode()进行快速查询的。此方法能够显着提高性能。
数据结构指的数据存储和组织方式,如日常的容器中,有方形、圆形、存放液体、固体,都是。
我们在前边见到了多种不同结构的集合,每种集合有各自数据结构特点,总结如下:
数组结构:一块连续的存储区域
链表结构:每个元素指向下一个元素
队列结构:容器先进先出的规则
栈结构:容器先进后出规则