容器类常用方法(2)

1. list:在Collection接口上增加大量方法,使得可以在List中间插入和移除元素。

     a)ArrayList: 长于随即访问,在List中间插入、删除元素较慢。
     b)LinkedList:通过较低的代价在List中间插入、删除元素,提供了优化的顺序访问;在随即访问方面比较慢,实现了更  多的特性方法。
package context;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class TestCollection3 {
	
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		for(int i=0; i<5; i++) {
			list.add("a" + i);
		}
		System.out.println(list);
		Collections.shuffle(list);  //随即排序
		System.out.println(list);
		
		List<String> list2 = list.subList(0, 3);  //截取子序列
		System.out.println(list2);
		
		LinkedList<String> link = new LinkedList<String>(list);
		Collections.sort(link);
		System.out.println(link);
		
		System.out.println(link.getFirst());  //列表为空NoSuchElementException
		System.out.println(link.element());
		System.out.println(link.peek());      //列表为空返回null
		
		//addLast add
		//removeFirst remove  pop
	}
}

2. stack:后进先出

Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 pushpop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。

首次创建堆栈时,它不包含项。

Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:

 Deque<Integer> stack = new ArrayDeque<Integer>();

package context;

import java.util.Stack;

public class TestCollection4 {
	
	public static void main(String[] args) {
		Stack<String> stack = new Stack<String>();
		for(String s : "My dog has fleas".split(" ")) {
			stack.push(s);
		}
		while(!stack.empty()) {
			System.out.print(stack.pop() + " ");
		}
		System.out.println();
	}
}

3.set:无序

   a)HashSet:对快速查询进行了优化,使用散列函数.
   b)TreeSet:使用红黑树数据结构,可排序
   c)LinkedHashSet:散列(快速查询)+链表(维护元素的插入顺序)
package context;

import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;

public class TestSet {
	
	public static void main(String[] args) {
		TreeSet<Integer> set = new TreeSet<Integer>();
		Random rand = new Random(47);
		for(int i=0; i<10000; i++) {
			set.add(rand.nextInt(30));
		}
		System.out.println(set);
		System.out.println(set.ceiling(12));  //大于等于指定值的最小元素
		
		System.out.println("comparator = " + set.comparator());
		
		Iterator<Integer> i = set.descendingIterator();   //反序迭代器
		while(i.hasNext()) {
			System.out.print(i.next() + " ");
		}
		System.out.println();
	}
}


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值