多語言for循環遍歷總結
工作中經常需要遍歷對象,但不同編程語言之間存在一些細微差別。為了便于比較和參考,這里對一些常用的遍歷方法進行了總結。
JAVA
數組遍歷
@Test
void ArrayForTest() {String[] array = {"劉備","關羽", "張飛"};// 第一種方式:下標遍歷for (int i=0; i<array.length; i++) {System.out.println(array[i]);}// 第二種方式:foreach遍歷System.out.println("--------------------");for (String value : array) {System.out.println(value);}// 第三種方式:轉成list遍歷System.out.println("--------------------");Arrays.asList(array).forEach(e -> System.out.println(e));// 第四種方式:轉成流使用stream遍歷System.out.println("--------------------");Arrays.stream(array).forEach(System.out::println);
}
列表遍歷
@Test
void ListForTest() {List<String> list = Arrays.asList("劉備", "關羽", "張飛");// 第一種方式:下標遍歷for (int i=0; i<list.size(); i++) {System.out.println(list.get(i));}// 第二種方式:foreach遍歷System.out.println("--------------------");for (String value : list) {System.out.println(value);}// 第三種方式:forEach遍歷System.out.println("--------------------");list.forEach(System.out::println);// 第三種方式:stream流遍歷System.out.println("--------------------");list.stream().forEach(System.out::println);
}
map遍歷
@Test
void mapForTest() {Map<String, Integer> map = new HashMap<>();map.put("劉備",1);map.put("關羽",2);map.put("張飛",3);System.out.println(map.entrySet());// 使用map.entrySet遍歷---最常見和最常用的遍歷方式for (Map.Entry<String, Integer> entry : map.entrySet()) {String key = entry.getKey();Integer value = entry.getValue();// 處理鍵值對System.out.println(key+"--"+value);}System.out.println("-------------");// Java 8 的 Lambda 表達式 -----這個感覺很方便,之后在java8環境用這種方式遍歷map.forEach((key, value) -> {// 處理鍵值對System.out.println(key + "--" +value);});System.out.println("-------------");// 遍歷 keySet() 或 values()for (String key : map.keySet()) {System.out.print(key + " ");}System.out.println();for (Integer value : map.values()) {// 處理值System.out.print(value + " ");}System.out.println();System.out.println("-------------");// stream流遍歷map.entrySet().stream().forEach(entry -> {String key = entry.getKey();Integer value = entry.getValue();// 處理鍵值對System.out.println(key+"--"+value);});
}
Javascript
這邊注意的幾個點是js中使用常用的for循環中,有兩種常用的循環:for in循環和for of 循環:
for in :是為了遍歷對象而創建的
作用:可以以任意順序遍歷一個對象的除Symbol以外的可枚舉屬性。
語法:for (variable in object){}
這里注意不要使用for in來遍歷數組,會遍歷數組的索引,而不是具體的元素
for of :是為了遍歷迭代器而創建的
作用:在可迭代對象上創建一個迭代循環,遍歷要迭代的數據。無法遍歷非迭代對象。
內置可迭代對象有:Array,Map,Set,String,TypedArray
語法:for (variable of iterable){}
簡單來說:for…in 遍歷索引,而 for…of 循環遍歷值
數組遍歷
const myArray = [1, 2, 3, 4, 5];// 最普通的for循環
for (let i = 0; i < myArray.length; i++) {console.log(myArray[i]);
}// 使用數組內置的forEach方式
myArray.forEach((element) => {console.log(element);
});// 使用 for...of 循環
for (const element of myArray) {console.log(element);
}// 使用 map 方法: map 方法創建一個新數組,通過對原始數組的每個元素應用一個函數來實現。
const doubledArray = myArray.map((element) => element * 2);
console.log(doubledArray);// 使用 filter 方法:filter 方法創建一個新數組,其中包含滿足指定條件的原始數組的元素。
const evenNumbers = myArray.filter((element) => element % 2 === 0);
console.log(evenNumbers);
Magic-api
magic-api中數組的for循環用的就是in,和js有所不同
循環集合
import 'java.lang.System' as System;
var list = [1,2,3];
for(index,item in list){ //如果不需要index,也可以寫成for(item in list)System.out.println(index + ":" + item);
}
循環指定次數
var sum = 0;
for(value in range(0,100)){ //包括0包括100sum = sum + value; //不支持+= -= *= /= ++ -- 這種運算
}
return sum;
/*
結果:5050
*/
循環map
import 'java.lang.System' as System;
var map = {key1 : 123,key2 : 456
};
for(key,value in map){ //如果不需要key,也可以寫成for(value in map)System.out.println(key + ":" + value);
}
/*
結果:
key1:123
key2:456
*/
Python
常用的兩種遍歷方式
cities = ["Guangzhou", "Beijing", "Shanghai", "Nanjing"]
for city in cities:print(f"當前城市: {city}")fruits = ["banana", "apple", "mango"]
for index in range(len(fruits)):print(f"當前水果: {fruits[index]}")