java对集合和迭代的操作基础总结

 Collections类,可以对Set、List和Map等集合进行操作的工具类,常用方法:

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接口

     

     

     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值