欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

20200729集合框架与泛型(Iterator接口,Map接口,Collection类和泛型)

程序员文章站 2022-06-14 22:00:53
集合框架与泛型(Iterator接口,Map接口,Collection类和泛型)一.Iterator接口二.Map接口1.HashMap实现类三.Collection类1.对集合元素排序和查找2..替换集合元素四.泛型五.快速排序一.Iterator接口1.hasNext()方法:判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true.2.next()方法:返回要访问的下一元素3.步骤:导入Iterator接口使用集合的iterate()返回Iterator对象while循环遍...

一.Iterator接口

1.hasNext()方法:判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true.
2.next()方法:返回要访问的下一元素
3.步骤:

  • 导入Iterator接口
  • 使用集合的iterate()返回Iterator对象
  • while循环遍历
  • 使用Iterator的hasNext()方法判断是否存在下一个可访问的元素
  • 使用next()方法返回要访问的下一个元素
    4.代码
Iterator it=list.iterator()
while(it.hasNext()){
String name=(String)it.next();
System.out.println(name);
}

二.Map接口

1.HashMap实现类

  • 导入HashMap类:
    import java.util.HashMap;
    import java.util.Map;
  • 创建HashMap对象:
    Map students=new HashMap();
  • 常用方法:
    map.put(“US”,“美国”);//增
    map.get(“CN”);//查
    map.remove(“US”);//删
    map.put(“CN”,“中国”);//改
  • 遍历的四种方式:
    遍历key的方式:
Set keys=map.keySet();
        for(Object key:keys){
            System.out.println(key+":"+map.get(key));
        }

遍历value的方式:

Collection values=map.values();
        for(Object value:values){
            System.out.println(value);
        }

获取键值对:

Set entry = map.entrySet();
        for(Object o:entry){
            System.out.println(o);
        }

iterator遍历:

  Set keys=map.keySet();
        Iterator itr=keys.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
public class TestHashMap {
    public static void main(String[] args) {
        //创建学员对象
        Student student1=new Student("胡","女");
        Student student2=new Student("易烊千玺","男");
        //创建保存"键-值对
        Map<String,Student> students=new HashMap<String, Student>();
        //把英文名称与学员对象按照"键值对"的方式存储在HashMap中
        students.put("OldHu",student1);
        students.put("Jackson",student2);

        //输出英文名
       /* System.out.println("学生英文名:");
        for(Object key:students.keySet()){
            System.out.println(key.toString());
        }*/
        //输出学生详细信息
        /*System.out.println("学生详细信息:");
        for(Object value:students.values()){
            Student student=(Student)value;
            System.out.println("姓名:"+student.getName()+", 性别:"+student.getSex());
        }*/
        //输出学员个数
        /*System.out.println("已添加"+students.size()+"个学员信息");
        System.out.println("键集:"+students.keySet());*/
        String key="OldHu";
        //判断是否存在"jack"这个键,如果存在,则根据键获取相应的值
        if(students.containsKey(key)){
            Student student=(Student)students.get(key);
            System.out.println("英文名为"+key+"的学员姓名:"+student.getName()+",性别是"+student.getSex());
        }
       /* Set entry=students.entrySet();
        for(Object o:entry){
            System.out.println("英文名为"+students.get(o)+"的学员姓名:"+students.keySet()+",性别是"+students.values());
        }*/
        /*String key1="Rose";
        if (students.containsKey(key1)) {
            students.remove(key1);
            System.out.println("学员"+key1+"的信息已删除");
        }*/

    }
}

三.Collection类

java提供的一个集合操作工具类,用于对集合元素的排序,查找和替换等操作。

1.对集合元素排序和查找

  • Comparable接口,compareTo():返回值:负整数·,零,正整数
  • sort():ArrayList list=new ArrayList;Collection.sort(list);//排序
  • binarySearch():index=Collection.binarySearch(list,student3);//查找下标

2…替换集合元素

  • Collection.fill(list,“haha”);替换集合内的元素

四.泛型

1.定义:参数化类型
2.定义语法:类1或者接口<类型实参>对象=new 类2<类型实参>()
ArrayListlist=new ArrayList();
表明:ArrayList集合list存储的元素类型必须是String类型

五.快速排序

参考博客链接:https://blog.csdn.net/shujuelin/article/details/82423852

public class Quicksort {
    public static void quick(int[]a,int start,int end){
        //把首位定为标准位tmp
        int i=start,j=end;
        if(i>=j)return;
        int tmp=a[i];
        //i=start j=end
        //循环条件:知道i<j,直到等于
        //循环内要有两个循环来重复i++和j--的过程
        while(i<j){
            while(a[j]>=tmp&&i<j){j--;} //如果该数大于基准位,则j--即可
            a[i]=a[j];//不满足上一条循环条件,则需要进行对应赋值,不满足条件时,说明当前a[j]小于基准位,则吧该数赋值给a[i];
            //i++;
            while(a[i]<=tmp&&i<j)i++;//如果该数小于基准位,则i++即可
            a[j]=a[i];//不满足条件时,那就将a[i]赋值给a[j]
           // j--;
        }
        a[i]=tmp; //出外层循环时,把标准位插入在i处
        quick(a,start,i-1);
        quick(a,i+1,end);
        //递归调用(自己调自己)
    }
    public static int[] randomArray(int length){
        int[] a=new int[length];
        for (int i = 0; i <a.length ; i++) {
            //随机数生成
            Random r=new Random();
            a[i]=r.nextInt(100);
        }
        return a;
    }
    public static void main(String[] args) {
        int[] a=randomArray(10);//生成随机数组
        System.out.println(Arrays.toString(a));//
        long now=System.currentTimeMillis();//当前时间
        quick(a,0,a.length-1);
        System.out.println(Arrays.toString(a));
        long used=System.currentTimeMillis()-now;
        System.out.println("花费:"+used);

    }
}

本文地址:https://blog.csdn.net/May_J_Oldhu/article/details/107698024