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;
}
}