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)方法来实现。
代码如下:
父: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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树