java集合框架随写1

来源:互联网 发布:开淘宝店铺方便自己吗 编辑:程序博客网 时间:2024/06/18 11:50

①集合框架的概念

父:Collection(接口)【AbstractCollection(类)】 ⇒ List (接口)【AbstractList(类)】,Set(接口)【AbstractSet(类)】
分支1:List 实现类⇒ ArrayList  LinkedList Vecter
分支2:Set 实现类⇒ HashSet TreeSet

②List和Set的区别
List:有序集合,元素可以重复。
Set:无序集合,元素不可以重复。

③Set不可以重复的实现原理
HashSet: 通过Object类的hashCode方法和equals方法来实现(引用对象不是Object的时候有必要重写这两个方法)。
TreeSet:通过二叉树原理实现,具体使用两种方法实现。
①通过继承Comparable接口重写该接口的compareTo(T, o)方法实现。
②创建一个比较器Compartor通过重写Compartor(接口)的compare(T o1, T o2)方法来实现。
代码如下:

import java.util.*;public class TreeSetDemo1 {    public static void main(String[] args)    {        TreeSet<Person> st= new TreeSet<Person>(new PersonComparator());        st.add(new Person("zhangsan005",18));        st.add(new Person("zhangsan006",20));        st.add(new Person("zhangsan002",15));        st.add(new Person("zhangsan003",19));        st.add(new Person("zhangsan001",13));        st.add(new Person("zhangsan008",15));        Iterator<Person> it = st.iterator();        while(it.hasNext())        {            Person p= it.next();            System.out.println(p.getName()+" "+p.getAge() );        }    }}/** *  * 方式一:通过继承Comparable接口重写该接口的compareTo方法实现。 * @author userclass Person implements Comparable<Person>{    private String name;    private int age;    Person(String name,int age)    {        this.name=name;        this.age=age;    }    public String getName()    {return name;}    public int getAge()    {return age;}    public int compareTo(Person p)    {        int num=this.age-p.getAge();        if(num==0)        {            num=name.compareTo(p.getName());            }        return num;    }} *//********************************************************************************************************//** * 方式二:通过构造函数中添加比较器(comparator)实现 * @author user * */class Person{    private String name;    private int age;    Person(String name,int age)    {        this.name=name;        this.age=age;    }    public String getName()    {return name;}    public int getAge()    {return age;}}//创建一个比较器类继承Comparator接口class PersonComparator implements Comparator<Person>{@Overridepublic int compare(Person arg0, Person arg1) {    // TODO Auto-generated method stub    int num=arg0.getAge()-arg1.getAge();    if(num==0)    {        num=arg0.getName().compareTo(arg1.getName());    }    return num;    }}
0 0