javalist集合的遍歷
㈠ java List遍歷集合的含義,請大家為我詳解一下。謝謝!
List<student> list = ArrayList<student>();
這句只是聲明一個學生列表,<>中的只是表示這個list中的元素類型。
for(student stus : list){}
這句是個foreach語法,類似與for(int i=0;i<list.size();i++){ Student stus = list.get(i); ...}
只不過java做了簡化,使用了迭代器,將list中的元素逐個遍歷,並且用Student stus對象來接收list的迭代對象。
㈡ 遍歷java集合或數組的幾種方式
list集合的遍歷3種方法:
[java] view plain
package com.sort;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* list的三種遍歷
* @author Owner
*
*/
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("c");//可添加重復數據
//遍歷方法一
for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
String value = iterator.next();
System.out.println(value);
}
//遍歷方法二
for(String value : list){
System.out.println(value);
}
//遍歷方法三
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
三種遍歷的比較分析:
方法一遍歷:
執行過程中會進行數據鎖定, 性能稍差, 同時,如果你想在循環過程中去掉某個元素,只能調用it.remove方法。
方法二遍歷:
內部調用第一種
方法三遍歷:
內部不鎖定, 效率最高, 但是當寫多線程時要考慮並發操作的問題
List介面的兩種主要實現類ArrayList和LinkedList都可以採用這樣的方法遍歷
關於ArrayList與LinkedList的比較分析
a) ArrayList底層採用數組實現,LinkedList底層採用雙向鏈表實現。
b) 當執行插入或者刪除操作時,採用LinkedList比較好。
c) 當執行搜索操作時,採用ArrayList比較好。
㈢ java 遍歷list
for(int j:list){
System.out.print(j+" ");
}
}
一直搞不懂~遍歷是什麼意思~我不用for-each~
遍歷就是把list裡面所有的東西都拿出來。 你不用for-each,對於list形式差不多,因為碰巧list.toString()方法裡面也是跑了一個遍歷,所以你看起來是一樣的。
你仔細看下,直接systemout和你的 格式不一樣的,直接tostring用逗號分割的,你的是用空白分給的。
㈣ java中list的遍歷有幾種方式
1.使用索引(index)來遍歷List
2.使用Iterator來遍歷List。(for-each其實也是利用Iterator)
注意:如果僅僅是遍歷,那麼可以可以使用索引或Iterator來遍歷。但是神握,如果你在遍歷的同時老消還要刪除元素,則最好使用Iterator來遍歷和刪除元素游含慶,這樣可以避免異常。
㈤ 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
㈥ JavaArrayList集合操作
假設需要合並的實體類是一個Java類,包含了多個欄位,其中需要合並的欄位名為"fieldName",那麼可以按照以下步驟進行操作:
定義一個Map,用於存儲合並後的實體類,其中Key為"fieldName"的值,Value為合並後的實體類。
Map<Object, YourEntityClass> resultMap = new HashMap<>();
遍歷List集合,對於每一個實體類,根據"fieldName"的值從Map中獲取已經合並的實體類,如果不存在,則將當前實體類添加到Map中肆吵;如果存在,則將當前實體類的相應欄位累加到已經存在的實體類中此雹悶。
for (YourEntityClass entity : yourList) {
Object key = entity.getFieldName();
if (resultMap.containsKey(key)) {
YourEntityClass existingEntity = resultMap.get(key);
// 累加相應欄位
existingEntity.setSomeField(existingEntity.getSomeField() + entity.getSomeField());
} else {
resultMap.put(key, entity);
}
}
最終,將合並後的實體類從Map中取出來,組成一個新森彎的List返回。
List<YourEntityClass> result = new ArrayList<>(resultMap.values());
這樣,就可以實現根據某個欄位值合並實體類並累加相應欄位的操作。
㈦ java如何遍歷List裡面的每個元素
List list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
或者:
for (Object object : list) {
System.out.println(object);
}
㈧ Java:遍歷一個List有哪些不同的方式
第一種:
for(Iterator<String> it = list.iterator(); it.hasNext(); ) {
....
}
這種方式在循環執行過程中會進行數據鎖定, 性能稍差, 同時,如果你想在尋歡過程中去掉某廳塌個元素,只能調用it.remove方法, 不能使用list.remove方法, 否則一定出現碧伏喚並發訪問的錯誤.
第悔凱二種:
for(String data : list) {
.....
}
內部調用第一種, 換湯不換葯, 因此比Iterator 慢,這種循環方式還有其他限制。
第三種:
for(int i=0; i<list.size(); i++) {
A a = list.get(i);
...
}
內部不鎖定, 效率最高, 但是當寫多線程時要考慮並發操作的問題。
㈨ java中怎麼遍歷list集合
常用的List集合, 可以使用下面幾種方式進行遍歷
參考代碼
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
list.add(5);
list.add(8);
list.add(9);
//方案一推薦.簡潔
for(Integere:list){
System.out.print(e+",");
}
//方案二
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
//方案三
Iterator<Integer>it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}