Java 基础之集合类

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());
        }

    }
}

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_35464253/article/details/81156033