java学习笔记(day11)

0x00 对象数组

数组有一个缺点:
一旦创建,程序运行期间长度不可以发生改变。

0x01 ArrayList类

ArrayList类和数组的区别:

数组的长度不可以发生改变;但是ArrayList集合的长度是可以随意变化的。

对于ArrayList来说,有一个尖括号代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。

PS:在创建ArrayList集合的时候,从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。

注意事项:

  1. 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
    如果内容是空,得到的是空的中括号:【】。
  2. 在新建ArrayList集合的时候,泛型里面写的什么数据类型,就只能往其中插入那种类型的数据。

向集合当中添加一些数据,需要用到add方法。

ArrayList集合的常用方法和遍历

ArrayList当中的常用方法有:

  1. public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
    备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合来说,add添加动作不一定成功。
  2. public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
  3. public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
  4. public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。

ArrayList集合存储基本数据类型

注意:因为集合的泛型只能是引用类型,不能是基本类型。因为集合保存的是地址值,而基本类型没有地址值。

如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类“。

基本类型 包装类(引用类型,包装类都位于java.lang包下)
byte Byte
short Short
int Integer【特殊】
long Long
float Float
double Double
char Character【特殊】
boolean Boolean

从JDK 1.5+开始,支持自动装箱、自动拆箱。
自动装箱:基本类型--> 包装类型
自动拆箱:包装类型--> 基本类型

练习1:生成6个1-33之间的随机整数,添加到集合中,并遍历集合。

package day11;
/*题目:生成6个1-33之间的随机整数,添加到集合中,并遍历集合。 */
import java.util.ArrayList;
import java.util.Random;
public class lianxi01 {    
      public static void main(String[] args) {        
            Random r = new Random();        
            ArrayList<Integer> list = new ArrayList<>();        
            for (int i = 0; i < 6; i++) {            
                  int ran = r.nextInt(33) + 1;            
                  list.add(ran);        
            }        
            for (int i = 0; i < list.size() ; i++) {            
                  System.out.println(list.get(i));        
            }    
      }
}

练习2:自定义4个学生对象,添加到集合,并遍历。

package day11;
/*题目:自定义4个学生对象,添加到集合,并遍历。 */
import java.util.ArrayList;
public class lianxi02 {    
      public static void main(String[] args) {        
            ArrayList<Student> list = new ArrayList<>();        
            Student one = new Student("万丽娜",18);        
            Student two = new Student("鞠婧祎",18);        
            Student three = new Student("费沁源",18);        
            Student four = new Student("徐子轩",18);        

            list.add(one);        
            list.add(two);        
            list.add(three);        
            list.add(four);        

            for (int i = 0; i <list.size() ; i++) {            
                  Student stu = list.get(i);            
                  System.out.println("姓名是"+stu.getName()+"年龄是"+stu.getAge());        
            }    
      }
}

练习3:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用大括号{}括起集合,使用@分割元素。格式参考{元素@元素@元素}

package day11;
/*题目:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用大括号{}括起集合,使用@分割元素。格式参考{元素@元素@元素} */
import java.util.ArrayList;
public class lianxi03 {    
      public static void main(String[] args) {        
            ArrayList<String> list = new ArrayList<>();        
            list.add("小明");        
            list.add("小红");        
            list.add("小刚");        
            list.add("小强");        
            System.out.println(list);        
            printArrayList(list);    
      }    
      public static void printArrayList(ArrayList<String> list){        
            System.out.print("{");        
            for (int i = 0; i <list.size() ; i++) {            
                  String name = list.get(i);            
                  if (i == list.size() -1 ){                
                        System.out.print(name + "}");            
                  } else {                
                        System.out.print(name + "@");            
                  }        
            }    
      }
}

练习4:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中;要求使用自定义方法来实现筛选

package day11;
/*题目:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中要求使用自定义方法来实现筛选。 */
import java.util.ArrayList;
import java.util.Random;
public class lianxi04 {    
      public static void main(String[] args) {        
            Random r = new Random();        
            ArrayList<Integer> list1 = new ArrayList<>();        
            for (int i = 0; i <20 ; i++) {            
                  int num = r.nextInt(100);            
                  list1.add(num);        
            }        
            System.out.println(list1);        

            ArrayList<Integer> list2 = get2list(list1);        
            System.out.println("偶数总共有:"+list2.size());        
            System.out.println(list2);    
      }    
      public static ArrayList<Integer> get2list(ArrayList<Integer> list1){        
            ArrayList<Integer> list2 = new ArrayList<>();        
            for (int i = 0; i <list1.size() ; i++) {            
                  int num = list1.get(i);            
                  if (num % 2 == 0){                
                        list2.add(num);            
                  }        
            }        
            return list2;    
      }
}
文章未经本人允许,禁止转载。 有技术问题,可加好友讨论。 联系方式:QQ:MjgxMjMxODAzNQ== 微信:bzNycjByLVhpYW9taW5n
原文地址:https://www.cnblogs.com/Xiaoming0/p/13779853.html