集合:
任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。
任何对象没有使用泛型之前会自动转换Object类型,使用泛型之后不用强制转换
集合的遍历: 集合中对象按照索引位置排序,可以有重复的对象。 可以按照顺序取,也可以指定取。
遍历ArrayList:
import java.util.*;
public class ArrayListTest{
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("Java");
list.add("ArrayList");
//方法一:使用for或foreach遍历
for (String str : list) {
System.out.println(str);
}
//方法二:将集合转化为数组,然后进行for或foreach遍历
String[] strArray=new String[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++)
{
System.out.println(strArray[i]);
}
//方法三:使用迭代器器
Iterator<String> iterator=list.iterator();
while(iterator.hasNext())//判断下一个元素之后有值
{
System.out.println(iterator.next());
}
}
}
遍历Map: 集合中的每一个元素包含一个键对象和一个值对象,键不可以重复,值可以重复。
数据结构 键值对
import java.util.*;
public class MapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "Hello");
map.put("2", "Java");
map.put("3", "Map");
//方法一:先通过Map.keySet遍历key,再通过key获取value值
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//方法二:通过Map.entrySet使用iterator遍历键值对对象,再通过getKey()和getValue()获取key和value的值
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//方法三:通过Map.entrySet遍历key和value
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//方法四:通过Map.values()遍历所有的value,但不能遍历key
for (String value : map.values()) {
System.out.println("value= " + value);
}
}
}
遍历Set:集合中的对象不按特定的方式排序,并且没有重复对象;对象是没有顺序的,集合是没有顺序的
import java.util.HashSet;
import java.util.Iterator;
public class SetTest {
public static void main(String[] args) {
HashSet<String> sets = new HashSet<>();
sets.add("h");
sets.add("e");
sets.add("l");
sets.add("l");//不可重复
sets.add("0");
//方法一:迭代遍历
for (Iterator<String> iterator = sets.iterator(); iterator.hasNext();){
System.out.println(iterator.next());
}
//输出结果:
/*
0
e
h
l
*/
//可以看出Set集合是不可重复(添加重复操作不会报错)且无序的
//方法二:foreach循环(没有普通for循环方法)
for (String value:sets) {
System.out.println(value);
}
}
}