迭代器遍历集合的区别
java迭代器
在一开始学习java的时候遍历map集合只会一种方法,通过keySet()方法
public class Demo02KeySet {
public static void main(String[] args) {
//创建一个Map集合
Map<String,Integer> map = new HashMap<>();
map.put("赵丽颖",168);
map.put("杨颖",165);
map.put("林志玲",178);
Set<String> keys = map.keySet();
//增强for
for (String key : keys) {
Integer I = map.get(key);
System.out.println(key+":"+I);
}
//迭代器
Iterator<String> i = keys.iterator();
while (i.hasNext()) {
String key = i.next();
Integer I = map.get(key);
System.out.println(key + ":"+I);
}
}
}
Map集合的第一种遍历方式:通过键找值的方式
Map集合中的方法:
Set keySet() 返回此映射中包含的键的 Set 视图。
实现步骤:
1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
2.遍历set集合,获取Map集合中的每一个key
3.通过Map集合中的方法get(key),通过key找到value
之后进一步学习
学会了用Entry方法
Iterator<Map.Entry<String, Integer>> iterator=map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = iterator.next();
System.out.println("key=" + entry.getKey() + ",value="+entry.getValue());
}
应用到for循环
System.out.println("------------------");
for (Map.Entry<String, Integer> entry : set) {
String k = entry.getKey();
Integer v = entry.getValue();
System.out.println(k+":"+v);
}
在python中遍历集合就非常简单
mylist = [1,2,3,4,5]
mydirt = {
"name":"张三",
"sex":"男",
"age":18
}
mytuple = (1,2,3,4,5)
myset = {1,2,3,3,4}
for i in mylist:
print(i)
for i in mytuple:
print(i)
for i in myset:
print(i)
for i,j in mydirt.items():
print("%s:%s" % (i,j))
for i in mydirt:
print(i)
python迭代器
在python中可以给普通的类添加一些属性,就是可迭代的对象
#容器:包含一组元素嗯哒数据类型比如:全部的组合数据类型
#迭代器:容器之上的一种迭代,迭代方式以对象形式表达,他定义的逐一获取容器元素的方法
from typing import Iterable
class Demo(object):
def __init__(self):#容器
self.names = list()
self.num = 0
def __iter__(self):
#成为一个可以迭代的对象,可以使用iter方法
#1.判断xxxx_obj是否可以迭代
#2.在第一步成立的前提,调用iter函数得到xxx_obj对象的——next——方法的返回值
return self
def add(self,name):
self.names.append(name)
def __next__(self):
if self.num < len(self.names):#如果取3就结束
ret = self.names[self.num]
self.num += 1
return ret
else:
raise StopIteration#for自动停
demo = Demo()
demo.add("老王")
demo.add("老赵")
demo.add("老李")
for i in demo:
print(i, end=',')
print(isinstance(demo,Iterable))