List 中 基本方法 的使用 和 输出集合中元素的 三种 方法(昆山学习笔记)

代码直接复制运行即可: 

1. add(),remove(),get(),set(),四种方法的使用情况。

2.输出 集合中的所有元素的 三种方法: (1)迭代器方法:iterator。(2)将元素存进Object数组:toArrays方法。(3)Size()和get()相结合的方法,也是List集合特有的方法。


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


public class Main {


public static void main(String[] args) {
List list = new ArrayList(); //知识点: ArrayList集合底层是用数组实现的Object[]数组。 因为可以存储所有的各种类型的引用类型。集合只能存储引用类型(对象)。
list.add("a"); 
list.add("b"); 
list.add("c");
list.add("d"); 

//List中的常用方法: add(int index , E element) , remove(int index) , get(int index) , set(int index , E element)。

//----------add()方法:
list.add(1,"e");
System.out.println(list); //输出结果为:[a,e,b,c,d] 。

//这时候集合变为:[a,e,b,c,d],长度(size)变为:5 。 

//list.add(10,"z");
//System.out.println(list);//会出现:索引越界错误(IndexOutOfBoundsException)。

//此时再试一下:index = 5 的时候:长度为5,说明有5个元素,但是索引是从0开始的。
list.add(5,"f"); 
System.out.println(list); //输出结果: [a, e, b, c, d, f]

// 由上面可以知道 index 的 取值范围:  0 =< index <= size 。 在这个范围内 系统不报错,否则报错:索引越界。

//----------remove()方法: 
// (1)
List list1 = new ArrayList() ; 
list1.add("a");
list1.add("b");
list1.add("c"); 
list1.add("d"); 
Object obj = list1.remove(2); 
System.out.println(obj);//输出:c 。 
System.out.println(list1);//输出:[a,b,d] 。 
//remove()方法:1.使用remove()方法之后会有一个返回值(所要删除的该index位置上的元素数值)。2.将删除(index位置上的元素)后的集合重新赋给调用者集合。
Object obj1 = list1.remove(2) ; 
System.out.println(obj1);//d
System.out.println(list1);//[a,b]
//(2)

List list2 = new ArrayList();
list2.add(111) ; 
list2.add(222) ; 
list2.add(333) ;
list2.add(444) ;
Object number = list2.remove(2);
System.out.println(number); //333
System.out.println(list2);//[111,222,444]

//因为add 可以 add("111") 也可以 add(1,"111");  
//那么 remove 可以 直接用 remove("111")删除"111"么,而不是用remove(0)???
/*
查看是否报错!
Object number1 = list2.remove(111);
System.out.println(number1);
System.out.println(list2);
出现报错:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 111, Size: 3
可以看到 后面的 index:111 。 说明remove()没有将"111"封装为引用类型(对象),而是直接当作了索引(index),所以才出现了索引越界错误。
List中的remove方法不能 封装 数字 ,它会把数字直接当作索引 去使用 。
*/
//-----------List 中的 get(int index)方法 :同过索引 index 来获取 集合中 对应位置上的 元素 。 

List list3 = new ArrayList(); 
list3.add("a"); 
list3.add("b"); 
list3.add("c"); 
list3.add("d");
Object number3 = list3.get(2) ; 
System.out.println(number3); // index = 2 集合中对应位置上:c 。
// 利用get这个属性 可以将 集合中的元素遍历出来  和  hasNext 起到了一样的作用 。 
for(int i=0;i<list3.size();i++){
System.out.println(list3.get(i)); //输出:abcd 
}
System.out.println("  ");
//因为Collection可以同过获取迭代器iterator()来完成迭代。因为List 是 Collection的子接口 所以 也可以使用获取迭代器的方法。 
Iterator itr = list3.iterator() ;
while(itr.hasNext()){
System.out.println(itr.next());//输出:abcd
}

//-------------set()方法
List list4 = new ArrayList() ; 
list4.add("a");
list4.add("b");
list4.add("c");
list4.add("d");

list4.set(2, "z");
System.out.println(list4);//输出:[a, b, z, d]
//----------------------------------------------------------------------------------
//将存在集合中的学生信息 遍历出来 。  下面有三种方法: 
List stu = new ArrayList() ; 
stu.add(new Student("张三",20));
stu.add(new Student("李四",21));
stu.add(new Student("王五",22));
stu.add(new Student("赵六",23));

//collection 和 list 都 只能存储 引用类型对象 。通过方法读出的 元素值 ,分为:1.解开封装得到的:"a" 和 "1"。 2.对象调用类中属性。


System.out.println(stu);

System.out.println(" ");

Object[] ojbect = stu.toArray() ; // 方法一: 将 集合中的 信息 存入了数组。 
for(int i=0;i<ojbect.length;i++){
System.out.println(ojbect[i]);
}

System.out.println(" ");

Iterator itr1 = stu.iterator() ; 
while(itr1.hasNext()){
System.out.println(itr1.next()); 
}     // 方法二: 迭代器。 

System.out.println(" "); 

for(int i=0;i<stu.size();i++){
System.out.println(stu.get(i));//stu.get(i)是一个对象,这个对象一直储存在stu集合当中,默认调用了toString方法。
//Object obj = new Student("张三",20); 对象存到集合中后, 从Student的类对象,转变为Object类对象。但依然是对象。
//stu.get(i)从集合中取出的元素是Object类的对象,而不是Student对象,所以无法调用子类的getName和getAge方法。
}

System.out.println(" ");

for(int i=0;i<stu.size();i++){
Student stu666 = (Student)stu.get(i);//把Object类强制转换成Student类。
System.out.println(stu666.getName()+"..."+stu666.getAge());
}
 // 方法三: size()和get()方法相结合。 
}


}

总结:
// ArrayList集合 存储的是 Object类 的 对象 。
//当取出ArrayList集合中的元素(Object对象)打印时,直接打印引用类型(对象),那么就默认 调用了toString()方法。就打印出 学生的信息了。
//println底层源代码:return (obj == null) ? "null" : obj.toString(); 地址不是null时,就调用toString()方法。 

猜你喜欢

转载自blog.csdn.net/Ameir_yang/article/details/80843973