java有哪些有序集合

 我来答
千锋互联教育
推荐于2017-11-23 · TA获得超过132个赞
知道答主
回答量:111
采纳率:0%
帮助的人:22.9万
展开全部
1、List:有序的collection(也称为序列)。此接口可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。列表允许重复的元素。
ArrayList:
特点:有序的、线性的、无固定大小的、有下标的、先进先出。
2.Set:是简单的集合,它的对象不按特定方式排序,只是简单的把对象加入集合中。不能有重复对象。
HashSet:
特点:无序的,长度可变的,不可重复的。
3.Map:Map中存入的对象是一对一对的,即每个对象和它的一个名字(键:key)关联在一起,一个键(key)只能对应一个值(value),反则不然。
HashMap:
特点:无序的、不可重复的。
LYA02028227
高粉答主

2018-03-30 · 关注我不会让你失望
知道大有可为答主
回答量:236
采纳率:100%
帮助的人:4.4万
展开全部

Comparable接口

Comparator接口

SortedSet接口

SortedMap接口

在集合框架中有许多类具有排序功能,如:TreeSet类TreeMap类

为了用“集合框架”的额外部分把排序支持添加到Java2 SDK,版本1.2,核心Java库作了许多更改。像String和Integer类如今实现Comparable接口以提供自然排序顺序。对于那些没有自然顺序的类、或者当您想要一个不同于自然顺序的顺序时,您可以实现Comparator接口来定义您自己的。

Comparable接口

适用于一个类有自然顺序的时候(对于这个自然顺序的理解,我觉得是这样:Comparable中只有一个方法compareTo(),它是比较当前实例和作为参数传入的元素,一个实例,一个参数,说明实例和参数自然具有可比较性)。

下面是Comparable接口的定义:

package java.lang; import java.util.*; public interfaceComparable<T> {         publicintcompareTo(T o); }


compareTo()方法:如果排序过程中当前实例出现在参数前,就返回某个负值。如果当前实例出现在参数后,则返回正值。否则,返回零。这里不要求零返回值表示元素相等。零返回值只是表示两个对象排在同一个位置。

Java1.6中实现了Comparable接口的类大概有50左右个。

Comparator接口

有些类是不能用于实现java.lang.Comparable,这时我们可以提供自己的java.lang.Comparator行为。或者,如果你不喜欢缺省的Comparable行为,你也照样可以提供自己的Comparator。

package java.lang; import java.util.*; public interface Comparable<T> { public int compareTo(T o); } 实例: import java.util.Comparator; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; /**  * 10、 定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性,  * 创建5个对象, 属性可为任意值. 编程对这5个对象按成绩排序,并将结果输出。  * (提示,用TreeSet和Comparator实现)  *   * *******************按成绩小>大排序****************  * @author jin  *  */ public class Test10 { /**  * @param args  */ public static void main(String[] args) { // TODO Auto-generated method stub Student_ stu1=new Student_("Joyce", 21, 98); Student_ stu2=new Student_("kelvin", 25, 95); Student_ stu3=new Student_("kelvun", 29, 89); Student_ stu4=new Student_("Judy", 25, 92); Student_ stu5=new Student_("phil", 43, 93); // 创建TreeSet Set<Student_> st=new TreeSet<Student_>(new Student_.TestScoresCompare<Student_>()); st.add(stu5); st.add(stu4); st.add(stu3); st.add(stu2); st.add(stu1); //遍历 Iterator<Student_> it=st.iterator(); while(it.hasNext()){ Student_ student=it.next(); System.out.println(student.getName()+" : "+student.getAge()+" : "+student.getTest_scores()); } } } class Student_{ // 三个属性 private String name; private int age; private int test_scores; public String getName(){ return this.name; } public int getAge(){ return this.age; } public int getTest_scores(){ return this.test_scores; } Student_(String name, int age, int test_scores){// 构造器 this.name=name; this.age=age; this.test_scores=test_scores; } // 这里为什么要用静态类呢? static class TestScoresCompare<T> implements Comparator<T>{ // 注意:Comparator<T>是泛型,实现了这个接口的类也要是泛型 //// 实现比较器 @Override public int compare(T o1, T o2) { Student_ stu1=(Student_)o1; Student_ stu2=(Student_)o2; if(stu1.test_scores>stu2.test_scores){ return 1; } return -1; } } // 泛型参数可以出现在:类,接口,成员方法,内嵌类(接口)中 }

另外,“集合框架”提供了两个特殊的接口:SortedSet接口 和 SortMap接口

SortedSet接口

接口为集的子集和它的两端(即头和尾)提供了访问方法。

从treeSet类的定义中可以发现,TreeSet中实现了SortedSet接口.

添加到SortedSet中的元素必须实现Comparable接口。或者你必须给他的实现类的构造函数提供一个Comparator(上面那个实例就是这样呀)。

如果添加元素时比较两个元素导致了零返回值,那么新元素就没有添加进去。

public interface SortedSet<E> extends Set<E> { Comparator<? super E> comparator(); // 返回与排序有关联的比较器 SortedSet<E> subSet(E fromElement, E toElement); // 返回指定对象间的元素 SortedSet<E> headSet(E toElement); // 返回从开始到指定元素的集合 SortedSet<E> tailSet(E fromElement); E first(); E last(); }

SortedMap接口

用来保持键Key的有序。

和上面的SortedSet接口类似,为映射的子集包括两个端点提供了访问方法。

TreeMap中实现了SortMap接口。

如果在添加一个键-值对时比较两个键产生了零返回值,那么,原始键对应值被新的值替代。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-11-14
展开全部
List和Map是有序的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
坐墙等红杏0117
2016-11-14 · TA获得超过140个赞
知道小有建树答主
回答量:212
采纳率:50%
帮助的人:83.1万
展开全部
list是有序的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beyondlandql
2018-03-21 · TA获得超过389个赞
知道小有建树答主
回答量:93
采纳率:0%
帮助的人:58.9万
引用千锋互联教育的回答:
1、List:有序的collection(也称为序列)。此接口可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。列表允许重复的元素。
ArrayList:
特点:有序的、线性的、无固定大小的、有下标的、先进先出。
2.Set:是简单的集合,它的对象不按特定方式排序,只是简单的把对象加入集合中。不能有重复对象。
HashSet:
特点:无序的,长度可变的,不可重复的。
3.Map:Map中存入的对象是一对一对的,即每个对象和它的一个名字(键:key)关联在一起,一个键(key)只能对应一个值(value),反则不然。
HashMap:
特点:无序的、不可重复的。
展开全部
或许你问的是排序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式