Java数组与容器应用总结

发布时间 : 星期三 文章Java数组与容器应用总结更新完毕开始阅读

//原来的排列顺序

}

}

System.out.println(list); //乱序后的list:[3, 2, 1, 0, 4] Collections.sort(list);//对list进行升序排序 System.out.println(list);//排序后的list:[0, 1, 2, 3, 4] Object key = list.get(3);//key = 3

int index = Collections.binarySearch(list, key);//index = 3,在list中查找key System.out.println(\ //Location of key

\

//is 3, list.get( //3) = 3

index + \

Collections.sort(list, new MyComparator());//用自己的比较器进行降序排序 System.out.println(list);//降序排序后的list:[ 4, 3, 2, 1, 0] key = list.get(3);//key = 1

index = Collections.binarySearch(list, key, new MyComparator());//查找 System.out.println(\ //Location of key

\

//is 3, list.get( //3) = 3

index + \

2.3.2 LinkedList的使用

(1)LinkedList的基本操作方法

public static void main(String[] args) {

LinkedList ll = new LinkedList(); for(int i=0; i<5; i++)

ll.add(Integer.toString(i));

ll.addFirst(\//在容器首位置插入元素“one” ll.addFirst(\//在容器首位置插入元素“two”

System.out.println(ll);//插入后的容器ll:[two, one, 0, 1, 2, 3, 4] //Like \

System.out.println(ll.getFirst());//获取容器中第一个元素 //Like popping a stack:

System.out.println(ll.removeFirst());//移除并返回容器中第一个元素“two”

}

System.out.println(ll);//ll:[ one, 0, 1, 2, 3, 4]

System.out.println(ll.removeFirst());//移除并返回容器中第一个元素“one” System.out.println(ll); //ll:[0, 1, 2, 3, 4] //Treat it like a queue, pulling elements //off the tail end

System.out.println(ll.removeLast());//移除并返回容器中最后一个元素4 //With the above operations, it's a dequeue! System.out.println(ll); //ll:[0, 1, 2, 3]

(2)用LinkedList制作一个栈(Stack)

LinkedList具有能够直接实现栈的所有功能的方法,可以直接将LinkedList作为栈使用。但是,将其包装成一个真正的“栈”使用起来更加直观: class MyStack { }

class MyStackTest {

public static void main(String[] args) {

MyStack ms = new MyStack(); for(int i=0; i<5; i++)

ms.push(Integer.toString(i)); //ms:栈顶[4, 3, 2, 1, 0]栈底 System.out.println(ms.top());//4 Stack ms:栈顶[4, 3, 2, 1, 0]栈底 System.out.println(ms.top());//4 Stack ms:栈顶[4, 3, 2, 1, 0]栈底 System.out.println(ms.pop());//4 Stack ms:栈顶[3, 2, 1, 0]栈底 System.out.println(ms.pop());//3 Stack ms:栈顶[2, 1, 0]栈底 System.out.println(ms.pop());//2 Stack ms:栈顶[1, 0]栈底 System.out.println(ms.pop());//1 Stack ms:栈顶[0]栈底 System.out.println(ms.pop());//0 Stack ms:栈顶[]栈底 private LinkedList list = new LinkedList(); public void push(Object v){list.addFirst(v);} public Object top(){return list.getFirst();} public Object pop(){return list.removeFirst();}

}

}

//!System.out.println(ms.pop());//运行时抛出“NoSuchElementException”

(3)用LinkedList制作一个队列(queue) class MyQueue { }

class MyQueueTest { }

public static void main(String[] args) { }

MyQueue mq = new MyQueue(); for(int i=0; i<5; i++)

mq.put(Integer.toString(i));//mq:队列入口[4, 3, 2, 1, 0]队列出口 System.out.println(mq.get()); //0 mq:队列入口[4, 3, 2, 1]队列出口

//1 mq:队列入口[4, 3, 2]队列出口 //2 mq:队列入口[4, 3]队列出口 //3 mq:队列入口[4]队列出口 //4 mq:队列入口[ ]队列出口

while(!mq.isEmpty())

private LinkedList list = new LinkedList(); public void put(Object v){list.addFirst(v);} public Object get(){return list.removeLast();} public boolean isEmpty(){return list.isEmpty();}

2.4 Set的功能方法

Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只是行为不同。Set不保存重复的元素。 与Set相关的类型间关系如下图所示:

Set接口:存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。 TreeSet:保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。 LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。在使用迭代器遍历Set时,结果会按元素插入的次序显示。

2.4.1 TreeSet的使用?SortedSet

TreeSet是SortedSet(按比较函数对元素排序)的唯一实现,可以确保元素处于排序状态,还可以使用SortedSet接口提供的附加功能: Comparator comparator() Object first() Object last() SortedSet subset(fromElement,toElement) SortedSet headset(toElement) SortedSet tailSet(fromElement) TreeSet使用范例: public static void main(String[] args)

{

SortedSet sortedSet = new TreeSet(Arrays.asList(

返回当前Set使用的Comparator,或者返回null,表示以自然方式排序。 返回容器中的第一个元素。 返回容器中的最末一个元素。 生成此Set的子集,范围从fromElement(包含)到toElement(不包含)。 生成Set的子集,由小于toElement的元素组成。 生成Set的子集,由大于或等于fromElement的元素组成。

联系合同范文客服:xxxxx#qq.com(#替换为@)