小学生学习Java的泛型

泛型:

    泛型就是标识着集合中保存着的元素是什么类型的.

      写法: <泛型(类型)>

      好处:  1.操作数据更加安全

               2.可以避免向下转型(强转类型)的麻烦

               3.可以将运行时的错误,转到编译时报错

public static void fun() {
		// 前后的类型要保持一致
		// jdk1.7 菱形泛型  后面的类型可以省去
		ArrayList<String> list = new ArrayList<>();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		// 遍历集合
		ListIterator<String> listIterator = list.listIterator();
		// 正向遍历
		while (listIterator.hasNext()) {
			// 获取集合中的元素
			String string = listIterator.next();
			System.out.println(string);
		}
		// 逆向遍历
		// 判断前一个是否有元素
		while (listIterator.hasPrevious()) {
			// 获取前一个元素
			String previous = listIterator.previous();
			System.out.println(previous);
		}
	}

注意: 当进行逆向遍历的时候,保证指针是在末尾,因为逆向遍历的时候是判断上一个是否有元素.

基本数据类型数组转集合:

public static void fun() {
		// 数组转集合
		int[] array = {1,2,3,4,5};
		// 根据泛型 这个集合中 每一个元素 都是一个数组
		List<int[]> list = Arrays.asList(array);
		System.out.println(list);
		// 直接传入 int[]  系统不会帮你进行自动装箱
		
		Integer[] newArray = {1,2,3,4,5};
		// 直接把数组中的元素 放入了集合中
		List<Integer> newList = Arrays.asList(newArray);
		System.out.println(newList);
	}

输出:

[[I@33909752]
[1, 2, 3, 4, 5]

泛型的第二种写法:

  ? extends E ( ? 是子类  E 是父类)


public static void fun() {
		// 创建一个Person集合 保存2个person
		ArrayList<Person> list1 = new ArrayList<>();
		list1.add(new Person("wang1", 11));
		list1.add(new Person("wang2", 11));
		// 创建一个Student集合 保存2个student
		ArrayList<Student> list2 = new ArrayList<>();
		list2.add(new Student("peng1", 11));
		list2.add(new Student("peng2", 11));

		// addAll(Collection<? extends E> c)
		list1.addAll(list2);
		System.out.println(list1);
	}

输出:

[Person [name=wang1, age=11], Person [name=wang2, age=11], Person [name=peng1, age=11], Person [name=peng2, age=11]]

猜你喜欢

转载自blog.csdn.net/zmw1224/article/details/80397997