collection包含三種子類型:1.List 2.Set 3.Queue
List:ArrayList、LinkedList
ArrayList:查找效率高,插入刪除效率低。有序(添加的順序排序),可重複數據。該類也是非同步的,在多線程的情況下不要使用。
LinkedList:查找效率低,插入刪除效率高,允許有null(空)元素。主要用於創建鏈表數據結構,該類沒有同步方法,如果多個線程同時訪問一個List,則必須自己實現訪問同步,解決方法就是在創建List時候構造一個同步的List。
例如:LinkedList Listlist=Collections.synchronizedList(newLinkedList(...));
Set :HashSet、TreeSet
HashSet:該類實現了Set接口,不允許出現重複元素,不保證集合中元素的順序,允許包含值爲null的元素,但最多隻能一個。
TreeSet:可實現排序功能
Map:HashMap
HashMap:(key-value)key:不能重複,根據鍵的HashCode值存儲數據,具有很快的訪問速度,最多允許一條記錄的鍵爲null,不支持線程同步。
遍歷
1.遍歷ArrayList
List<Integer> list=new ArrayList<Integer>();
list.add(2);
list.add(1);
list.add(5);
for (Integer i: list) {
System.out.println(i);
}
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
//轉換爲array
Integer[] strArray = new Integer[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++){
System.out.println(strArray[i]);
}
//使用迭代器進行相關遍歷
Iterator<String> ite=list.iterator();
while(ite.hasNext()){//判斷下一個元素之後有值
System.out.println(ite.next());
}
2.遍歷map
Map<String, String> map = new HashMap<String, String>();
map.put("1", "a");
map.put("2", "c");
map.put("3", "n");
//第一種:普遍使用,二次取值
for (String key : map.keySet()) {
System.out.println("key = "+ key + " ===== value = " + map.get(key));
}
//第二種
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key = " + entry.getKey() + " ====== value= " + entry.getValue());
}
//第三種:推薦,尤其是容量大時
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " ======= value= " + entry.getValue());
}
//第四種 遍歷value
for (String v : map.values()) {
System.out.println("value = " + v);
}
對於排序:
Collections.sort(list);//這裏的list類型必須爲 List<T>
//這裏的sort(List<?>,new Comparator<?>()) 可自定義排序對象
Collections.sort(result, new Comparator<Record>() {
@Override
public int compare(Record o1, Record o2) {
return Integer.parseInt(o2.get("id").toString())- Integer.parseInt(o1.getStr("id").toString());
}
});
java8中的排序:(這裏是從小到大)
list.sort((o1, o2) -> o1.getAge() - o2.getAge());
Enumeration接口中定義了一些方法,通過這些方法可以枚舉(一次獲得一個)對象集合中的元素。
序號 | 方法描述 |
---|---|
1 | boolean hasMoreElements( ) 測試此枚舉是否包含更多的元素。 |
2 | Object nextElement( ) 如果此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素。 |
import java.util.Vector;
import java.util.Enumeration;
public class EnumerationTester {
public static void main(String args[]) {
Enumeration<String> days;
Vector<String> dayNames = new Vector<String>();
dayNames.add("Sunday");
dayNames.add("Monday");
dayNames.add("Tuesday");
dayNames.add("Wednesday");
dayNames.add("Thursday");
dayNames.add("Friday");
dayNames.add("Saturday");
days = dayNames.elements();
while (days.hasMoreElements()){
System.out.println(days.nextElement());
}
}
}
//遍歷結果爲:
//Sunday
//Monday
//Tuesday
//Wednesday
//Thursday
//Friday
//Saturday
與前端進行交互:
var form = $("#form").serializeJson();
$.ajax({
type: "POST",
data:form,//form表單中的參數
dataType: "json",
url: url,//url
async : false,
success:function(data){
console.log(data);
}
});
public Object text(HttpServletRequest request){
Map<String, Object> map = new HashMap<String,Object>();
//得到表單中所有參數
Enumeration<?> temp = request.getParameterNames();
if (null != temp) {
while (temp.hasMoreElements()) {//測試此枚舉是否包含更多元素
//循環得到參數的code與value
String en = (String) temp.nextElement();//返回下一個元素
String value = request.getParameter(en);//元素的value
System.out.println(en +" " + value);
}
}
map.put("code", "1");
return map;
}