您的位置:首页 > 编程语言 > Java开发

java集合框架随写1

2016-04-06 12:54 549 查看
①集合框架的概念

父: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 user

class 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>
{
@Override
public 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java