天天看点

集合(day07)——遍历集合 、对象集合、集合中删除某个元素(重点) 集合习题

遍历集合

集合的特点:

(1) 集合有默认值;

(2) 集合初始化后长度可以改变;

(3) 集合通过泛型,只能存储引用类型;

(4) 直接打印集合名称,得到的是:[具体内容];

如果集合内容为空,结果是:[ ]。

泛型:

遇到尖括号引起来的,表示指定使用引用数据类型;

代码如下:

public class Test02 {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList=new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);

        System.out.println(arrayList);			//[1,2]
        //正常遍历
        for(int i=0;i<arrayList.size();i++){
            System.out.println(arrayList.get(i));
        }

        //删除集合元素,倒着遍历
        //先获取1号索引位置元素,再删除该索引元素,索引-1
        //经过再遍历,索引值为0
        //获取0号索引位置元素,再删除该索引元素,元素清空
        for(int i=arrayList.size()-1; i>=0;i--){
            System.out.println(arrayList.get(i));
            System.out.println(arrayList.remove(i));
        }
    }
}
           

解析:

(1)获取集合长度是 i<arrayList.size();

(2)获取当前元素是 arrayList.get(i);

(3)添加元素是 arrayList.add(泛型中类型一致的值);

(4)删除集合元素 arrayList.remove(i);

注意:

(1)删除集合元素方法返回值类型是返回的元素值。

(2)操作时注意不能访问没有的元素,否则会报错

Exception in thread "main" java.lang.IndexOutOfBoundsException
           
for(int i=arrayList.size()-1; i>=0;i--){
            System.out.println(arrayList.remove(i));
            System.out.println(arrayList.get(i));//报错,删完了再获取该位置元素
}
           

========================================================================================================================================================

集合中删除指定元素:

List<String> list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("def");
        list.add("abc");
//第一种
        for (int i = list.size() - 1; i >= 0; i--) {
            if(list.get(i)=="def"){
                list.remove(i);
            }
        }
        System.out.println(list);		//[abc, abc]
//第二种
         for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == "def") {
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);		//[abc, abc]
           

========================================================================================================================================================

对象集合:

public class Demo {
    public static void main(String[] args) {
        //存储String类型
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("abc");
        //存储对象类型
        ArrayList<Person> arrayList = new ArrayList<>();
        Person p1 = new Person("张三", 23);
        Person p2 = new Person("李四", 24);
        Person p3 = new Person("王五", 25);
        arrayList.add(p1);
        arrayList.add(p2);
        arrayList.add(p3);
    }
}
           

========================================================================================================================================================

集合习题

第一题:

下面可以删除list中所有的“java”的代码是()

集合(day07)——遍历集合 、对象集合、集合中删除某个元素(重点) 集合习题

A、 list.remove(“java”);

B、list.removeAll(“java”);

C、

集合(day07)——遍历集合 、对象集合、集合中删除某个元素(重点) 集合习题

D、

集合(day07)——遍历集合 、对象集合、集合中删除某个元素(重点) 集合习题

E、

集合(day07)——遍历集合 、对象集合、集合中删除某个元素(重点) 集合习题

解析

A错误, list.remove(“java”)只删除的是遇到的第一个java

B错误,list.removeAll(“java”)直接报错,原因如下:

removeAll(java.util.Collection<?>) in ArrayList cannot be applied to (java.lang.String)

解释:ArrayList中的removeAll(java.util.Collection<?>)不能应用于java.lang.String

C正确,集合中原本有得元素是 [java, aaa, java, java, bbb]

倒着遍历,最终结果是 [aaa, bbb]

D错误,集合中原本有得元素是 [java, aaa, java, java, bbb]

顺着遍历,遇见一个java删除该元素,因此下一个元素顶替了该元素位置,少遍历某一个元素

这样处理最终结果是 [aaa, java, bbb]

E正确, [java, aaa, java, java, bbb]

顺着遍历并且删除后先自减索引值,遇见一个java删除该元素,自减完后继续遍历

这样处理最终结果是 [aaa, bbb]

============================================================================

第二题:

查看以下代码,输出的结果为:( )

ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
list.add("def");
list.add("ghi");

for(int i = 0; i < list.size(); i++) {
	if(list.get(i).equals("def")) {
		list.remove(i);
	}
}

System.out.println(list);
           

A:[abc]

B:[abc, def]

C:[abc, def, ghi]

D:[abc, ghi]

解析

注意正序删除元素时候,只有i–才能将集合里的相关内容全部删除。

这道题中,选C。

============================================================================

第三题:

以下不属于ArrayList集合中常用的方法的是:( )

A:add(E e);

B:size();

C:delete(int index);

D:remove(int index);

解析

ABD都正确,C并不是集合的方法。

============================================================================

第四题

集合和数组的区别描述正确的是:( )

A:数组的长度是固定的、集合的长度是可变

B:数组既可以存储基本数据类型、也可以存储引用数据类型

C:数组只能存储基本数据类型

D:集合只能存储引用数据类型

解析

A正确,数组长度固定,,集合长度可变。

B正确,数组可以存储基本类型和引用类型。

C错误,数组可以存储基本类型和引用类型。

D正确,集合只能存储引用类型。