List集合接口实际应用举例

问题一

创建一个List集合对象,然后存入5名学生信息(学生要求包括姓名 年龄 分数),然后根据每个学生的分数调用sort方法对集合中所有的学生进行顺序排列

在这个题目中我运用了
静态成员内部类、
List接口指向ArrayList类(接口实现类)接口的多态、
List接口的add方法(添加元素)、
List接口的sort方法(排序方法)、
在sort方法中运用了匿名内部类对判断器接口Comparator中comparator方法进行重写、
在运用匿名内部类的过程中使用了lambda表达式、
在最后遍历的时候运用了List接口中的size()方法(判断集合中的元素个数)
运用了迭代器Iterator接口,通过List接口中的iterator()方法(实际上调用的是ArrayList集合实现类中的方法)返回一个Itr类型(Iterator接口的实现类)让接口接收
在循环输出的过程中通过hasNext()方法作为是否为集合最后的判断,然后通过next()方法指向下一对象,在next()方法中运用了泛型的思想。
然后在输出的时候看起来是输出一个对象,但是在引用数据类型当中输出对象的引用实际上是输出对象.toString()方法。所以要输出对象中的内容需要重写toString()方法,避免输出的是地址值。

package com.qianfeng.day12;

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

public class ListWork01 {
	
	static class Student{
		private String name;
		private Integer age;
		private Double score;
		
		public Student() {
			super();
		}

		public Student(String name, Integer age, Double score) {
			super();
			this.name = name;
			this.age = age;
			this.score = score;
		}

		
		@Override
		public String toString() {
			return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public Integer getAge() {
			return age;
		}

		public void setAge(Integer age) {
			this.age = age;
		}

		public Double getScore() {
			return score;
		}

		public void setScore(Double score) {
			this.score = score;
		}
		
		
	}
	
	public static void main(String[] args) {
		List<Student> list = new ArrayList<Student>();
		list.add(new Student("张三",18,98.5));
		list.add(new Student("李四",21,68.5));
		list.add(new Student("王五",20,88.5));
		list.add(new Student("赵六",17,100.0));
		list.add(new Student("田七",25,55.5));
		
		//方法一匿名内部类
		list.sort(new Comparator<Object>() {

			@Override
			public int compare(Object o1, Object o2) {
				// TODO Auto-generated method stub
				return (int)(((Student)o1).getScore() - ((Student)o2).getScore());
			}
			
		});
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		System.out.println("=================================================");
		//方法二lambda表达式
		list.sort(

			(Object o1,Object o2) -> (int)(((Student)o2).getScore() - ((Student)o1).getScore())
			
		);
		//万能迭代器
		Iterator<Student> iterator = list.iterator();
		while(iterator.hasNext()) {
			Object value = iterator.next();
			System.out.println(value);
		}

	}
}

问题二

创建一个List集合,往集合中随机存入1-10之间的每个数,要求每个元素都不能重复

在此题中运用的很多方法跟问题一类似
运用到了Math.random()(产生0-1之间的小数)
contains(Object obj);方法是从Collection接口继承到List接口然后通过ArrayList集合实现类来实现,作用是判断集合对象中是否存在传入对象,如果存在返回true不存在返回false

package com.qianfeng.day12;

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

public class ListWork02 {
	public static void main(String[] args) {
		//接口的多态实现
		List<Integer> list = new ArrayList<Integer>();
		int number;
		while(list.size() < 10) {
			//通过Math.random()方法实现随机数
			number = (int)(Math.random()*10+1);
			//通过contains()方法判断集合中是否有number对象
			//其中有自动装箱
			if (!list.contains(number)) {
				list.add(number);
			}
		}
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + "\t");
		}
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值