static void shuffle(List list):对list集合元素进行随机排序,eg:洗牌;
static void reverse(List list):反转list集合元素的顺序;
static void sort(List list,Comparator c):根据指定的比较器对list进行排序;
static void swap(List list,int i,int j):对list集合中的i处和j处元素互换;
static int binarySearch(List list,Object key):使用二分查找法找出key在list中的索引;
static Comparator<T> reverseOrder(比较器):强行逆转比较器;
static boolean replaceAll(List list , 旧对象,新对象):使用新对象替换list中所有指定的旧对象
Map:存储的是键值对,且保证键的唯一性
!——Hashtable:哈希表数据结构,不可以存入null键和null值,线程同步;
!——HashMap:哈希表数据结构,可以存null键和null值,线程不同步;
!——TreeMap:实现SortedMap接口,底层二叉树,不同步,对key排序。
Map集合类没有遍历集合的直接方法,只能通过Map对象的keySet()获取键的Set集合,在通过Set集合的迭代器获取键和值,或者调用entrySet()获取键和值的映射关系再存入到Set集合中,分别同Map.Entry接口中方法getKey()和getValue()获取键和值。当然,既然也可以通过增强for循环获取,具体三种方法代码如下:
<span style="font-size:18px;">package com.xiongmc.Collection;
/*
* 存入学生(姓名,年龄,地址)
- * 按学生姓名拼音排序
- * 学生姓名和年龄相同视为同一个人
- */
- import java.util.*;
- publicclass HashMapTest {
- @SuppressWarnings("unchecked")
- publicstatic void main(String[] args){
- Map<Students,String> hs =new HashMap();
- hs.put(new Students("zhangsan",23),"xizang");
- hs.put(new Students("lisi",20),"xinjiang");
- hs.put(new Students("wangwu",25),"neimenggu");
- hs.put(new Students("yangma",19),"guangxi");
- //第一种取出方式
- Set<Students> keyset = hs.keySet();
- Iterator<Students> it = keyset.iterator();
- while(it.hasNext()){
- Students s = it.next();
- System.out.println(s.toString()+".."+hs.get(s));
- }
- //第二种取出方式
- Set<Map.Entry<Students,String>> en = hs.entrySet();
- Iterator<Map.Entry<Students, String>> iter = en.iterator();
- while(iter.hasNext()){
- Map.Entry<Students,String> me = iter.next();
- Students stu = me.getKey();
- String addr = me.getValue();
- System.out.println(stu+"..."+addr);
- }
- //第三种取出方式
- for(Object key : hs.keySet()){
- System.out.print(key+"--->");
- System.out.println(hs.get(key));
- }
- }
- }
- class Studentsimplements Comparable<Students>{
- private String name;
- privateint age;
- public Students(String name,int age){
- this.name = name;
- this.age = age;
- }
- publicint compareTo(Students s){
- int num =this.name.compareTo(s.name);
- if(num==0){
- returnnew Integer(this.age).compareTo(s.age);
- }
- return num;
- }
- //以下hashCode()和equals()保证键的唯一性
- publicint hashCode(){
- return name.hashCode()+age*5;
- }
- //重写equals方法
- publicboolean equals(Object obj){
- if(!(objinstanceof Students)){
- thrownew ClassCastException("类型不匹配!");
- }
- Students s = (Students)obj;
- returnthis.name.equals(s.getName()) && this.age==s.getAge();
- }
- //类的基本方法定义
- public String getName(){
- return name;
- }
- publicint getAge(){
- return age;
- }
- public String toString(){
- return name+".."+age;
- }
- }</span>
迭代器Iterator接口,用来遍历Collection集合元素,只有三个方法:
boolean hasNext():如果集合中还有没被遍历的,返回true;
Object next():返回集合里的下一个元素;
void remove():删除集合里上一次next方法返回的元素。
List:有序集合,元素可以重复,有索引
!——ArrayList:数据结构使用的是数组结构,查询快,增删慢,长度可变;
!——LinkedList:底层数据结构使用的链表,增删速度快,查询慢,
Set:无序集合,元素不可以重复
!——HashSet:数据机构是哈希表,线程非同步,元素值可以是null;存放到此集合中的对象应该重写hashCode()和equals(),hashCode值是判断元素是否一致的唯一标准,因采用hash算法,效率比较高。
TreeSet:采用二叉树数据结构,可对Set集合中的元素排序;存放到此集合中的对象要么实现Comparable接口,要么可以在构造TreeSet对象的时候传递一个实现了Comparator接口的比较器对象。关于比较器的设计,需要实现Comparetor接口