第9章 集合
Java中数组的长度是不可修改的,为了保存数据量不确定的数据,以及具有映射关系的数据,Java提供了集合。
Colection接口是List、Set、Queue接口的父接口。
1、List集合
List是一个有序的,可重复的集合;主要有两个实现类:ArrayList、LinkedList
(1)ArrayList
e.g.
import java.util.ArrayList;
public class Demo1 {
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add(25); // 添加元素
al.add('A');
al.add("abc123");
al.add('A');
al.remove(1); // 删除元素
for(Object x :al){
System.out.println(x);
}
}
}
(2)LinkedList
e.g.
import java.util.Iterator;
import java.util.LinkedList;
class Student{
private String name;
private int age;
Student(String name,int age){
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student[name:"+this.name+", age:"+this.age+"]";
}
}
public class Demo2 {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
Student s1 = new Student("张三",19);
ll.add(s1);
ll.add(new Student("李四",20));
ll.add("字符串");
// for(int i=0;i<ll.size();i++){
// System.out.println(ll.get(i));
// }
// 使用迭代器对LinkedList进行遍历
Iterator it = ll.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
PS:ArrayList和LinkedList的区别:
①实现List接口的方式不同;
②ArrayList是基于动态数组结构的实现,访问元素的速度优于LinkedList;LinkedList是基于链表数据结构实现,占用内存空间较大,在批量插入或删除数据时优于ArrayList.
2、Set集合
Set是一个无序的,不可重复的集合;主要有两个实现类:HashSet、TreeSet.
(1) HashSet
e.g.
import java.util.HashSet;
public class Demo3 {
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add('A'); // 添加元素
hs.add('B');
hs.add(25);
hs.add('A'); // 添加重复的元素
hs.remove('A'); // 删除元素
for(Object x : hs){
System.out.println(x);
}
}
}
(2) TreeSet
e.g.
import java.util.TreeSet;
public class Demo4 {
public static void main(String[] args) {
TreeSet ts = new TreeSet();
ts.add('a');
ts.add('b');
ts.add('3');
ts.add('3');
for(Object x: ts){
System.out.println(x);
}
}
}
3、Map集合
Map是一种键值对(key-value)集合,用于保存具有映射关系的数据;实现类有两个:HashMap、TreeMap.
(1)HashMap
e.g.
import java.util.HashMap;
import java.util.Iterator;
public class Demo4 {
public static void main(String[] args) {
HashMap hm = new HashMap();
for(int i = 'A';i<='Z';i++){
hm.put((char)i,i);
}
Iterator it = hm.keySet().iterator();
while (it.hasNext()){
Object k = it.next();
Object v = hm.get(k);
System.out.println(k+":"+v);
}
}
}
(2)TreeMap
TreeMap类的使用方法和HashMap相同,不同的是Treemap类可以对键对象进行排序。