Java.util包中提供了一些集合类,常用的集合类有List集合、Map集合、Set集合继承关系如下:
Collection接口
常用方法如下:
由于Set集合和List集合都继承了Collection接口,所以这些方法Set和LIst都是能用的。
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args)
{
Collection<String> collection=new ArrayList<String>();
((ArrayList<String>) collection).add("hello");
((ArrayList<String>) collection).add("world");
Iterator<String> iterator=collection.iterator();
while (iterator.hasNext())
{
System.out.println(iterator.next());
}
System.out.println("长度:"+collection.size());
System.out.println("删除hello,还有:");
collection.remove("hello");
Iterator<String> iterator1=collection.iterator();
while (iterator1.hasNext())
{
System.out.println(iterator1.next());
}
System.out.println("再删除world,剩余长度:");
collection.remove("world");
System.out.println("长度"+collection.size());
}
}
运行结果:
List集合
list集合实现了Collection接口并且定义了两个非常重要的方法:
get(int index);//获得索引位置的元素
set(int index,Object obj);//将索引位置的元素替换为obj
案例:
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class CollectionTest {
public static void main(String[] args)
{
List<String> list=new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
System.out.println("长度: "+ list.size());
for (int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
System.out.println("将索引位置为0的元素替换为d");
list.set(0,"d");
for (int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
}
输出结果:
Set集合:
set集合中的对象不按特定的方式排序,且不能包含重复元素
对于TreeSet,存进treeSet中的对象必须实现Comparable接口,并重写comparaTo(Object obj)方法用来比较此对象与指定对象的顺序,如果小于、等于或大于,则分别返回负整数、0、1.
案例:
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Student implements Comparable {
private int id;
private String name;
public Student(int id,String name) {
this.id=id;
this.name=name;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
@Override
public int compareTo(Object o) {
Student student=(Student)o;
return id>student.id? 1:(id==student.id? 0:-1);
}
public static void main(String args[])
{
Student stu1=new Student(001,"张三");
Student stu2=new Student(002,"李四");
Student stu3=new Student(003,"王五");
TreeSet<Student> tree=new TreeSet<Student>();
tree.add(stu1);
tree.add(stu2);
tree.add(stu3);
Iterator it=tree.iterator();
while (it.hasNext())
{
Student student=(Student) it.next();
System.out.println("id:"+student.getId()+" "+"name:"+student.getName());
}
System.out.println("第一个元素:"+"id:"+tree.first().getId()+" "+"name:"+tree.first().getName());
System.out.println("最后一个元素:"+"id:"+tree.last().getId()+" "+"name:"+tree.last().getName());
System.out.println("stu3之前的所有元素");
Iterator<Student> iterator=tree.headSet(stu3).iterator();
while (iterator.hasNext())
{
Student student=(Student) iterator.next();
System.out.println("id:"+student.getId()+" "+"name:"+student.getName());
}
System.out.println("stu2之后的所有元素");
Iterator<Student> iterator1=tree.tailSet(stu2).iterator();
while (iterator1.hasNext())
{
Student student=(Student) iterator1.next();
System.out.println("id:"+student.getId()+" "+"name:"+student.getName());
}
System.out.println("stu1和stu3之间的元素");
Iterator<Student> iterator2=tree.subSet(stu1,stu3).iterator();
while (iterator2.hasNext())
{
Student student=(Student) iterator2.next();
System.out.println("id:"+student.getId()+" "+"name:"+student.getName());
}
}
}
输出结果:
Map集合
map没有实现collection接口,提供的是Key到Value的映射,一个Key只能映射一个Value,map集合中允许存储null,且可以多个。
Map接口常用方法如下:
案例:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class HashMapTest {
public static void main(String[] args)
{
Map<String,String> stuMap=new HashMap<String, String>();
stuMap.put("001","张阿三");
stuMap.put("003","王阿五");
stuMap.put("002","李阿四");
System.out.println("key为001的值:"+stuMap.get("001"));
if(stuMap.containsKey("001"))
{
System.out.println("存在key为001的元素");
}
else
{
System.out.println("不存在key为001的元素");
}
if(stuMap.containsValue("李阿四"))
{
System.out.println("存在Value为李阿四的元素");
}
else
{
System.out.println("不存在Value为李阿四的元素");
}
System.out.println("所有Key的集合");
Iterator<String> it=stuMap.keySet().iterator();
while (it.hasNext())
{
System.out.println(it.next());
}
System.out.println("所有Value的集合");
Iterator<String> it1=stuMap.values().iterator();
while (it1.hasNext())
{
System.out.println(it1.next());
}
TreeMap<String,String> treeMap=new TreeMap<String, String>();
treeMap.putAll(stuMap);
Iterator<String> it3=treeMap.keySet().iterator();
System.out.println("TreeMap类实现的集合,有序");
while (it3.hasNext())
{
System.out.println(it3.next());
}
}
}
运行结果: