java歷遍類
① java List遍歷方法及其效率對比
Java代碼
package zbalpha test;
import java util ArrayList;
import java util Iterator;
import java util List;
public class ListTest {
public static void main(String args[]){
List<Long> lists = new ArrayList<Long>();
for(Long i= l;i< l;i++){
lists add(i);
}
Long oneOk = oneMethod(lists);
Long oOk = oMethod(lists);
Long threeOk = threeMethod(lists);
Long fourOk = fourMethod(lists);
System out println( One: + oneOk);
System out println( Two: + oOk);
System out println( Three: + threeOk);
System out println( four: + fourOk);
}
public static Long oneMethod(List<Long> lists){
Long timeStart = System currentTimeMillis();
for(int i= ;i<lists size();i++) {
System out println(lists get(i));
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long oMethod(List<Long> lists){
Long timeStart = System currentTimeMillis();
for(Long string : lists) {
System out println(string);
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long threeMethod(List<Long> lists){
Long timeStart = System currentTimeMillis();
Iterator<Long> it = erator();
while (it hasNext())
{
System out println(it next());
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
public static Long fourMethod(List<Long> lists){
Long timeStart = System currentTimeMillis();
for(Iterator<Long> i = erator(); i hasNext();) {
System out println(i next());
}
Long timeStop = System currentTimeMillis();
return timeStop timeStart ;
}
}
容器類可以大大提高編程效率和編程能力 在Java 中 所有的容器都由SUN公司的Joshua Bloch進行了重新設計 豐富了容器類庫的功能
Java 容器類類庫的用途是 保存對象 它分為兩類
Collection 一組獨立的元素 通常這些元素都服從某種規則 List必須保持元素特定的順序 而Set不能有重復元素
Map 一組成對的 鍵值對 對象 即其元素是成對的對象 最典型的應用就是數據字典 並且還有其它廣泛的應用 另外 Map可以返回其所有鍵組成的Set和其所有值組成的Collection 或其鍵值對組成的Set 並且還可以像數組一樣擴展多維Map 只要讓Map中鍵值對的每個 值 是一個Map即可
迭代器
迭代器是一種設計模式 它是一個對象 它可以遍歷並選擇序列中的對象 而開發人員不需要了解該序列的底層結構 迭代器通常被稱為 輕量級 對象 因為創建它的代價小
Java中的Iterator功能比較簡單 並且只能單向移動
( ) 使用方法iterator()要求容器返回一個Iterator 第一次調用Iterator的next()方法時 它返回序列的第一個元素
( ) 使用next()獲得序列中的下一個元素
( ) 使用hasNext()檢查序列中是否還有元素
( ) 使用remove()將迭代器新返回的元素刪除
Iterator是Java迭代器最簡單的實現 為List設計的ListIterator具有更多的功能 它可以從兩個方向遍歷List 也可以從List中插入和刪除元素
List的功能方法
List(interface): 次序是List最重要的特點 它確保維護元素特定的順序 List為Collection添加了許多方法 使得能夠向List中間插入與移除元素(只推薦 LinkedList使用) 一個List可以生成ListIterator 使用它可以從兩個方向遍歷List 也可以從List中間插入和刪除元素
ArrayList: 由數組實現的List 它允許對元素進行快速隨機訪問 但是向List中間插入與移除元素的速度很慢 ListIterator只應該用來由後向前遍歷ArrayList 而不是用來插入和刪除元素 因為這比LinkedList開銷要大很多
LinkedList: 對順序訪問進行了優化 向List中間插入與刪除得開銷不大 隨機訪問則相對較慢(可用ArrayList代替) 它具有方法addFirst() addLast() getFirst() getLast() removeFirst() removeLast() 這些方法(沒有在任何介面或基類中定義過)使得LinkedList可以當作堆棧 隊列和雙向隊列使用
Set的功能方法
Set(interface): 存入Set的每個元素必須是唯一的 因為Set不保存重復元素 加入Set的Object必須定義equals()方法以確保對象的唯一性 Set與Collection有完全一樣的介面 Set介面不保證維護元素的次序
HashSet: 為快速查找而設計的Set 存入HashSet的對象必須定義hashCode()
TreeSet: 保持次序的Set 底層為樹結構 使用它可以從Set中提取有序的序列
LinkedHashSet: 具有HashSet的查詢速度 且內部使用鏈表維護元素的順序(插入的次序) 於是在使用迭代器遍歷Set時 結果會按元素插入的次序顯示
lishixin/Article/program/Java/hx/201311/26494
② Java中怎麼遍歷map中value值
Java中遍歷Map對象的4種方法:
1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容量大時。
(2)java歷遍類擴展閱讀:
關於JAVA的遍歷知識補充:
1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。
2、使用EntrySet 遍歷,效率更高。
③ java 遍歷 類屬性的屬性值
用反射,代碼你可以參考下面的:
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Field[] field = model.getClass().getDeclaredFields(); //獲取實體類的所有屬性,返回Field數組
for(int j=0 ; j<field.length ; j++){ //遍歷所有屬性
String name = field[j].getName(); //獲取屬性的名字
System.out.println("attribute name:"+name);
String type = field[j].getGenericType().toString(); //獲取屬性的類型
if(type.equals("class java.lang.String")){ //如果type是類類型,則前麵包含"class ",後面跟類名
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
String value = (String) m.invoke(model); //調用getter方法獲取屬性值
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Integer")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Integer value = (Integer) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Short")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Short value = (Short) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value); }
}
if(type.equals("class java.lang.Double")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Double value = (Double) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Boolean")){
Method m = model.getClass().getMethod("get"+name);
Boolean value = (Boolean) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.util.Date")){
Method m = model.getClass().getMethod("get"+name);
Date value = (Date) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value.toLocaleString());
}
}
}
④ java中如何遍歷一個類的所有對象
右邊的numbers這個對象的類型必須是一個集合,普通類肯定是不行的,得到類的全部對象?你應該是對於類和對象搞得不清楚或者你表達的有問題。建議你好好研究一下基礎,主要是我來做任務就地一個找到你的了。