10.27作业 11次

一、请简述集合框架。

Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。

集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。

集合框架的类和接口均在java.util包中。

任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。


二、给定以下代码,请定义方法listTest()统计集合中指定元素出现的次数,如"a": 2,“b”: 2,"c" :1, “xxx”:0。

package topic02;

import java.util.LinkedList;
import java.util.List;

public class Demo02 {
    public static void main(String[] args) {
        List<String> list=new LinkedList<>();
        String a="a";
        String b="s";
        list.add("s");
        list.add("c");
        list.add("a");
        System.out.println("a:"+listTest(list,a));
        System.out.println("s:"+listTest(list,b));


    }
    public static int listTest(List<String> list,String s) {
        int count = 0;
        for (String i : list) {
            if (s.equals(i)){
                count++;
        }

        }
        return count;
    }

}

  


三、定义一个方法,要求此方法把int数组转成存有相同元素的集合(集合里面的元素是Integer),并返回。

package topic02;

import java.util.ArrayList;
import java.util.List;

public class Demo03 {
    public static void main(String[] args) {
        int[]  arr={2,8,9,24,54,66,71,77};
        List<Integer> list=arrChangeList(arr);
        System.out.println(list.toString());
    }
    public static List<Integer> arrChangeList(int[] arr){
        ArrayList<Integer> list =new ArrayList<>();
    for (Integer i:arr){
        list.add(i);
    }
        return list;
    }

}

  

四、定义一个集合,并把集合(集合里面的元素是Integer)转成存有相同元素的数组,并将结果输出在控制台。(可以使用Object[]数组类型接收转换的数组)

package topic02;

import java.util.ArrayList;

public class Demo04 {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        list.add(22);
        list.add(23);
        list.add(24);
        list.add(25);
        list.add(26);
        Object a[]=list.toArray();
        for (int i = 0; i <a.length ; i++) {
            System.out.println(a[i]+",");
        }

    }
}

  

五、定义一个方法listTest(ArrayList al, String s),要求使用contains()方法判断al集合里面是否包含s。

package topic02;

import java.util.ArrayList;

public class Demo05 {
    public static void main(String[] args) {
        ArrayList<String> ar=new ArrayList<String>();
            ar.add("sun");
            ar.add("me");
            ar.add("ru");
        System.out.println(listTest(ar,"s"));

    }
    public  static boolean listTest(ArrayList<String> list,String s){
        if (s.contains(s)){
            return true;
        }
        return false;
    }

}

  

 


六、请简述迭代器的实现原理

迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。

  从定义可见,迭代器模式是为容器而生。很明显,对容器对象的访问必然涉及到遍历算法。你可以一股脑的将遍历方法塞到容器对象中去;或者根本不去提供什么遍历算法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决问题。

  然而在前一种情况,容器承受了过多的功能,它不仅要负责自己“容器”内的元素维护(添加、删除等等),而且还要提供遍历自身的接口;而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历。第二种方式倒是省事,却又将容器的内部细节暴露无遗。


七、定义一个方法listTest(ArrayList al, Integer s),要求返回s在al里面第一次出现的索引,如果s没出现过返回-1。

package topic02;

import java.util.ArrayList;

public class Demo07 {
    public static void main(String[] args) {
        ArrayList<Integer> list=new ArrayList<>();
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        System.out.println(listTest(list,5));
    }
    public  static int listTest(ArrayList<Integer> list, Integer s){
        for (int i = 0; i <list.size() ; i++) {
            if (list.get(i).equals(s)){
                return i;
            }
        }
        return -1;
    }
}

  

posted @ 2020-10-27 20:34  珍惜眼前人--  阅读(119)  评论(0编辑  收藏  举报