不知道你是否像我一样,写题的时候经常不知道选什么样的数据类型来存储数据,有时候选好了数据类型(比如LinkedList),又不知道该数据类型下面包含哪些方法,每次都特别痛苦。
那么整理一下吧。
Java集合整体框架
Java集合
一. 遍历Map的方式
在这里传送门
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTraversal {
public static void main(String[] args){
HashMap<Integer, Integer> map = new HashMap<>();
map.put(3, 6);
map.put(2, 5);
Traversal01(map);
Traversal02(map);
Traversal03(map);
Traversal04(map);
Traversal05(map);
}
// entrySet() 用for循环拿到entry
public static void Traversal01(HashMap<Integer, Integer> map){
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+" " +entry.getValue());
}
}
// keySet() 用for循环拿到key
public static void Traversal00(HashMap<Integer, Integer> map){
for(Integer key : map.keySet()){
Integer
System.out.println(entry.getKey()+" " +entry.getValue());
}
}
// 单独拿到keys(用keySet()) 或者单独拿到values(map.values())
public static void Traversal02(HashMap<Integer, Integer> map){
for(Integer key: map.keySet()){
System.out.println(key);
}
for(Integer value : map.values()){
System.out.println(value);
}
}
// keySet拿到key,get一下就可以在同一个for循环内拿到value
public static void Traversal03(HashMap<Integer, Integer> map){
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key+ " " +value);
}
}
// entryset迭代器 获得键值对集合entry,并遍历
public static void Traversal04(HashMap<Integer, Integer> map){
//返回的是entry<Integer,Integer>类型的迭代器
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
//返回时没声明it的类型,it.next()需要强转
// Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry<Integer, Integer> entry = it.next();
System.out.println(entry.getKey() + " " +entry.getValue());
}
}
// keyset迭代器 获得键集合,并遍历,拿到key,通过key去get值。
public static void Traversal05(HashMap<Integer, Integer> map){
//返回时声明了it是Integet类型的迭代器,不用强转
//Iterator<Integer> it = map.keySet().iterator();
//返回时没声明it的类型,it.next()需要强转
Iterator it = map.keySet().iterator();
while(it.hasNext()){
// Integer key = it.next();
Integer key = (Integer)it.next();
Integer value = map.get(key);
System.out.println(key + "" + value);
}
}
}
二. 遍历List的方式
- 第一种迭代器
ArrayList<String> list = new ArrayList<String>();
list.add("徐冰");
list.add("萤火");
Iterator<String> ite = list.iterator(); //将List集合中元素转到iterator变量中。
while(ite.hasNext()) //hasNext()判断当前“指针”下面是否还有元素的方法,java中没有指针,这只是举个例子。
{
System.out.println(ite.next()); //如果“指针”下面有元素,则移动“指针”并获取相应位置的元素。
}
- 第二种 for循环
for (int i = 0; i < list.size(); i++) { //用size方法获取长度。
System.out.println(list.get(i)); //用get方法获取值。
}
- 第三种foreach
for (String name : list) { //使用foreach进行遍历。
System.out.println(name);
}
三. 遍历Set的方式
- 第一种:for each
//同样的for each写法
for (Entry<String, String> entry: map.entrySet()) {
int key = entry.getKey();
String value = entry.getValue();
}
- 第二种
Iterator<Entry<String, String>> iter = map.entrySet().iterator();
Entry<String, String> entry;
while (iter.hasNext()) {
entry = iter.next();
int key = entry.getKey();
String value = entry.getValue();
}
- 第三种:迭代器 iterator
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()) {
int key = iter.next();
String value = map.get(key);
}
————————————————————————————————————————————
//还有一种写法 用for each
for (String key : map.keySet()) {
String value = map.get(key);
}