Java零基础学习(ArrayList Vector LinkedList 泛型 可变参数 增强for循环)

ArrayList存储字符串并遍历

1.将集合转化为数组遍历
public class MyTest {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(new Student(15, "李明"));
        list.add(new Student(16, "李亮"));
        list.add(new Student(15, "张强"));
        Object[] objects = list.toArray();
        for (int i=0;i<objects.length;i++){
            Student student=(Student)objects[i];
            System.out.println(student);
        }
	}
}
2.用迭代器遍历
public class MyTest {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(new Student(15, "李明"));
        list.add(new Student(16, "李亮"));
        list.add(new Student(15, "张强"));
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
        System.out.println(iterator.next().toString());
        }
    }
}
3.用普通for循环遍历
public class MyTest {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(new Student(15, "李明"));
        list.add(new Student(16, "李亮"));
        list.add(new Student(15, "张强"));
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }
}

Vector的特有功能

1.概述
	Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件
2.Vector类的特有功能
	public void addElement(E obj)	将指定组件添加到此向量的末尾,将其大小增加1
	public E elementAt(int index)	返回此索引处的组件
	public Enumeration elements()	返回此向量组件的枚举
	pubic E firstElement()	返回此向量的第一个(位于索引0处)组件
	public E lastElement()	返回此向量的最后一个组件
	public void insertElementAt(E obj,int index)	将指定对象作为此向量中的组件插入到指定的index处

LinkedList的特有功能

1.概述
	List接口的连接列表实现。实现所有可选的列表,并且允许所有元素(包括null)。
2.LinkedList类的特有功能
	public void addFirst(E e)及addLast(E e)
		将指定元素插入到此列表的开头和将指定元素添加到此列表的结尾
	public E getFirst()及getLast()
		返回此列表的第一个元素和最后一个元素
	public E removeFirst()
		移除并返回此列表的第一个元素
	public E removeLast()
		移除并返回此列表的最后一个元素

去除ArrayList中重复自定义元素对象

ArrayList去除集合中字符串的重复值(字符串的内容相同)

import java.util.ArrayList;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Student> st = new ArrayList<>();
        st.add(new Student(13,"李华"));
        st.add(new Student(13,"李华"));
        st.add(new Student(17,"王五"));
        st.add(new Student(16,"刘琳"));
        st.add(new Student(16,"刘琳"));
        st.add(new Student(16,"刘琳"));
        st.add(new Student(13,"李亮"));
        st.add(new Student(13,"张强"));
        ArrayList<Student> st2 = new ArrayList<>();
        for (Student student : st) {
            boolean contains = st2.contains(student);
            if (contains){
                continue;
            }else{
                st2.add(student);
            }
        }
        System.out.println(st2);

    }
}

泛型概述和基本使用

1.泛型概述
	是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型
	参数化类型:把类型当做参数一样的传递
2.泛型的格式
	<数据类型> 这里的数据类型只能是引用数据类型
3.泛型的好处
	a.把运行时间的问题提前到了编译期间
	b.避免了强制类型转换
	c.优化了程序设计,解决了黄线警告
	注意:泛型只在编译期有效 但在运行期就擦除了
泛型的由来
泛型的由来:通过Object转型问题引入
	早期的Object类型可以接收任意的对象类型,但是在实际的使用中会有类型转换的问题
	所以Java就提供了泛型来解决这一问题
泛型类的概述及使用
1.泛型类的概述:
	把泛型定义在类上
2.定义格式:
	public class 类名<泛型类型1,...>
3.注意事项
	泛型类型必须是引用类型
泛型方法的概述和使用
1.概述
	把泛型定义在方法上
2.定义格式
	public <泛型类型> 返回类型 方法名(泛型类型 变量名)
泛型接口的概述和使用
1.概述
	把泛型定义在接口上
2.定义格式
	public interface 接口名<泛型类型>
泛型高级之通配符
1.泛型通配符<?>
	任意类型,如果没有明确,那就是Object以及任意java类
2.? extends E
	向下限定,E及其子类
3.? super E
	向上限定,E及其父类
增强for的概述和使用
1.增强for循环的概述
	简化数组和Collection集合的遍历
2.格式
	for(元素数据类型 变量:数组或者Collection集合){
        使用变量即可,该变量就是元素
	}
3.案例演示
public class MyTest {
    public static void main(String[] args) {
        int[] arr={1,5,45,26,4,49};
        for (int i:arr){
            System.out.println(i);
        }
    }
}
4.好处和注意事项
	简化遍历
	增强for的目标要判断是否为null
	在迭代集合的途中,不能增删元素,会报并发修改异常
可变参数的概述和使用
1.可变参数的概述
	定义方法的时候不知道该定义多少个参数
2.格式
	修饰符 返回值类型 方法名(数据类型... 变量名){}
3.注意事项
	a.这里的变量其实是一个数组
	b.如果一个方法有可变参数,并且有多个参数,那么可变参数肯定是最后一个
4.举例
public static int add(int... a){
	// 定义一个累加变量
	int sum = 0 ;
	for(int s : a ){
		sum += s ;
	}
	return sum;
}

Arrays工具类的asList()方法的使用

1.概述
	将数组转换成集合
2.注意事项
	得到的集合长度是不可变的
	不能往这个转换后的集合中添加或者删除元素
	只能获取元素

总结

集合有许多的中有许多的继承类,它们之间有共同点,也有不同点,一定要多多练习,将它们都熟练掌握