开发语言
通过对比不同开发语言的特性,了解各个语言的特质以及共通之处,有效和适当的采用相应的开发语言和开发技巧
Python
基本内容: 键不可重复且必须是可hash的 凡是可变对象都不可以做字典的key
1.定义 dict() 或者 {}
2. keys values() items()
3. [] get 字典的pop方法
新的索引键并为其赋值,可以将项目添加到字典中。一对中括号紧跟在字典后面,中括号里写key,等号右侧写value
pop() 方法删除具有指定键名的项: popitem() 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目)
clear() 关键字清空字典:
setdefault()返回指定键的值。如果该键不存在,则插入具有指定值的键。
update()使用指定的键值对字典进行更新
4.遍历 for sigle_example in dict_example:
5. multidict
想要一个键映射多个值,将这多个值放到另外的容器中, 比如列表或者集合里面
d = {‘a‘: [1, 2, 3]}
# 列表和元组的组合
pairs = [("a", ‘Spring‘), (1, ‘Summer‘), (1, ‘Fall‘), (3, ‘Winter‘)]
for key, value in pairs:
if key not in d:
d[key] = []
d[key].append(value)
print(d)
另外的写法
pairs = [("a", ‘Spring‘), (1, ‘Summer‘), (1, ‘Fall‘), (3, ‘Winter‘)]
f_dict = dict()
for key_cd, value_cd in pairs:
data = f_dict.get(key_cd)
if data is None:
f_dict[key_cd] = []
f_dict[key_cd].append(value_cd)
print("$##########",f_dict)
6.内置函数:
len()
del score_dict[‘示例‘] del 关键字删除具有指定键名的项目: del 关键字也可以完全删除字典:
in 或者not in 成员操作符
内建函数 next(iterator)
7 迭代器 Python里的迭代器并没有提供类似has_next() Python的做法有一些利用异常进行流程控制的嫌疑
Python专门将关键字for用作了迭代器的语法糖
s = {‘one‘:1,‘two‘:2,‘three‘:3}
m = iter(s)
while True:
try:
print (next(m))
except StopIteration:
print("##")
break
内置了一个模块itertools
Java
1.定义: HashMap TreeMap linkedHashMap
2. keySet values entrySet
3. put get remove
4.遍历
01.for循环的形式
for (Entry entry : map.entrySet()) {}
02.Iterator 迭代器的形式
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
}
5.Map
6. size
import java.util.*;
public class TraversalInit {
public static void main(String [] args) {
//创建List 对象
List arrayList = new ArrayList();
arrayList.add("aaa");
arrayList.add("ccc");
arrayList.add("fff");
//01.创建Map对象
Map systemNote = new HashMap<>();
//1.创建Map对象
Map TestMap = new HashMap<>();
if (arrayList != null && !arrayList.isEmpty()) {
for (String row : arrayList) {
// 02. 使用get获取数据然后判断是否是null值
// get()方法的返回值为null时,可能有两种情况,一种是在集合中没有该键对象,
// 另一种是该键对象没有映射任何值对象,即值对象为null
String dataNote = systemNote.get(row);
if (dataNote == null) {
dataNote = "aaaa";
// 03. null值情况下,添加数据
systemNote.put(row, dataNote);
}
// 2. 使用 containsKey 判断是否是包含
if (!TestMap.containsKey(row)) {
// 3. 不在内的情况下,添加数据
TestMap.put(row, "bcdfg");
}
//04.循环结束,初始化完成
}
}
// 遍历的两种方式 1.for循环的形式
for (Map.Entry entry : systemNote.entrySet()) {
System.out.println(entry.getKey()+": " +entry.getValue());
}
// 遍历的两种方式 2.迭代器的形式
Iterator iter = TestMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
System.out.println(entry.getKey()+"## " +entry.getValue());
}
}
}
7.注意: java的HashMap的key为对象 key是自定义类
HashMap就是通过对象的= hashCode() 和 equals 判定是否为同一个key,重写这两个方法
8.源码:
java.util.Iterator;
package java.util;
public interface Iterator {
boolean hasNext();
E next();
void remove();