List

1:集合的概念
多个元素组成单元对象

数组主要特征:
长度固定
只能放同一种类型的元素

集合:
用来存放元素
长度不固定
可以是任何类型(同一个集合存放元素的类型可以不同)
提供一系列的方法完成元素的操作(插入、修改、删除、更新。。。)
提高编程效率
提供了很多优秀的算法和数据结构

2:接口实现
List接口实现:
ArrayList: 动态数组方式存储元素,元素也是有序的、可重复的,顺序为添加时的顺序。
查询效率高。
LinkedList: 链表方式存储元素。
插入、删除效率高。

    add():添加元素
	remove():删除元素
	set():替换
	get(int i): 根据元素下标得到元素
	size(): 得到集合的长度
	isEmpty():判断集合中是否存放元素,没有存放元素则返回true;否则返回false
	clear():清除集合中所有的元素
package com.newer.demo;

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

/**
 * 演示List
 * @author Administrator
 *
 */
public class ListDemo {

	public static void main(String[] args) {
		//1、创建List实例
		List<String> ls=new LinkedList<>();
		
		//2、向集合中添加元素
		ls.add("Java");
		ls.add("C++");
		ls.add("JavaScript");
		//添加指定元素
		ls.add(1, "HTML");
		
		
		//3、读取集合中的元素
		String e=ls.get(0);
		
		System.out.println(ls);
		System.out.println(e);
		System.out.println(ls.get(2));
		
		//3、集合是否为空
		System.out.println(ls.isEmpty());//false
		
		//4、集合中是否包含某个元素
		System.out.println(ls.contains("C++"));//true
		
		//5、集合的长度
		System.out.println(ls.size());
		
		//6、删除元素
		ls.remove(2);
		//ls.remove("JavaScript");
		System.out.println(ls);
		
		//5、替换元素
		ls.set(1, "HTML");
		System.out.println(ls);
		//6、清除所有元素
		ls.clear();
		System.out.println(ls);
		System.out.println(ls.isEmpty());//true
		
		List<String> ls2=new ArrayList<>();
		ls2.add("Hello");
		ls2.add("Welcome");
		
		//7、addAll
		ls.addAll(ls2);
		System.out.println(ls);
		
		
		
		//8、遍历集合
		for(int i=0;i<ls.size();i++) {
			System.out.println(ls.get(i));
		}
		
		//遍历集合2:使用foreach语句
		for(String str:ls) {
			System.out.println(str);
		}
		
		int[] arr= {10,20,30,40};
		for (int i : arr) {
			System.out.println(i);
		}

	}

}

3:List接口:
继承Collection接口
特点:
采用线性列表的方式存储数据
可以存储任何元素,并且元素可以重复
元素的存放顺序为添加的是顺序

常用方法:
   boolean add(E e) :在集合中已有元素的尾部添加元素
      void clear() :讲集合中所有的元素删除掉
   boolean contains(Object o):检查集合中是否包含某个元素
     E get(int index)  : 用来读取集合中的元素
                    参数为集合元素的下标,从0开始。

boolean isEmpty() :检查集合中是否包含元素,如果不包含,则返回true
E remove(int index) : 删除元素
E set(int index, E element) : 用element替换index位置处的元素
int size():得到集合中元素的个数

Object[] toArray() :将集合转换为数组

List接口主要实现类:
ArrayList:采用数组方式存储元素,长度是可变的,且长度不限,也称动态数组。
它是非线程安全的。
LinkedList: 采用链表(双向链表)方式实现数据存储。
非线程安全的。

     如果集合中查询数据比较频繁,则使用ArrayList
     如果集合中插入、删除操作比较频繁,则使用LinkedList

求最大最小分

package com.newer.demo;

public class Student {
	private String name;
	private int score;
	private String id;
	
	public Student() {
		
	}
	
	public Student(String name, int score, String id) {
		super();
		this.name = name;
		this.score = score;
		this.id = id;
	}


	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}

}

package com.newer.demo;

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

public class StudentDemo {

	public static void main(String[] args) {
		List<Student> stus=new ArrayList<>();
		
		//创建多名学生,并添加至集合中
		Student stu=new Student("张三",90,"1001");
		stus.add(stu);
		
		stu=new Student("李四",80,"1002");
		stus.add(stu);
		
		stu=new Student("王五",94,"1003");
		stus.add(stu);
		
		//求平均成绩
		int total=0;
		//求最大分数
		int max=stus.get(0).getScore();
		//求最小分数
		int min=stus.get(0).getScore();
		
		
		
		for (Student s : stus) {
			int score=s.getScore();
			total+=score;
			
			if(max<score) {
				max=score;
			}
			if(min>score) {
				min=score;
			}
		}
		
		System.out.println("平均成绩:"+total/stus.size());
		System.out.println("最高成绩:"+max);
		System.out.println("最低成绩:"+min);
	}

}

学生管理

package com.newer.demo2;

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

import com.newer.demo.Student;

/**
 * 完成学生信息的操作:<br>
 * 1、注册学生<br>
 * 2、查询所有的学生信息<br>
 * 3、根据学号查询某个具体的学生信息<br>
 * 4、根据学号删除某个学生信息<br>
 * 5、修改某个学生信息<br>
 * 6、显示所有的学生信息<br>
 * 7、根据学号显示具体的某个学生信息
 * 
 * @author Administrator
 *
 */
public class StudentManager {
	private List<Student> stus;

	public StudentManager() {
		stus = new ArrayList<>();
	}

	public StudentManager(List<Student> stus) {
		this.stus = stus;
	}

	/**
	 * 注册一名学生
	 * 
	 * @param student
	 */
	public void addStudent(Student student) {
		stus.add(student);
	}

	/**
	 * 查询所有的学生信息
	 * 
	 * @return
	 */
	public List<Student> query() {
		return stus;
	}

	/**
	 * 根据学号查询某个具体的学生信息
	 * 
	 * @param id
	 * @return 如果没有查到,则返回null
	 */
	public Student query(String id) {

//		for (Student student : stus) {
//			String id_=student.getId();
//			if(id_.equals(id)){
//				return student;
//			}
//		}
//		return null;
//		

		// 或这样写:
		Student stu = null;
		for (Student student : stus) {
			String id_ = student.getId();
			if (id_.equals(id)) {
				stu = student;
				break;
			}
		}
		return stu;

	}

	/**
	 * 根据学号删除某个学生信息
	 * 
	 * @param id
	 */
	public void delStudent(String id) {
		int index = -1;

		for (int i = 0; i < stus.size(); i++) {
			Student stu = stus.get(i);
			if (stu.getId().equals(id)) {
				index = i;
				break;
			}
		}

		if (index > -1) {
			stus.remove(index);
		}

	}

	/**
	 * 修改某个学生信息
	 * 
	 * @param student
	 */
	public void updateStudent(Student student) {

		String id = student.getId();

		int index = -1;
		for (int i = 0; i < stus.size(); i++) {
			Student s = stus.get(i);
			if (s.getId().equals(id)) {
				// 说明找到了
				index = i;
				break;
			}
		}
		// 更新
		if (index > -1) {
			stus.set(index, student);
		}

		// 还可这样写:
//		for (int i = 0; i < stus.size(); i++) {
//			Student s = stus.get(i);
//			if (s.getId().equals(id)) {
//				s.setId(student.getId());
//				s.setName(student.getName());
//				s.setScore(student.getScore());
//				break;
//			}
//		}

	}

	/**
	 * 显示具体的某名学生信息
	 * 
	 * @param stu
	 */
	public void display(Student stu) {
		if (stu == null) {
			System.out.println("没有查到相关的学生信息");
		} else {
			System.out.println("id:" + stu.getId());
			System.out.println("name:" + stu.getName());
			System.out.println("score:" + stu.getScore());
			System.out.println("------------------------------");
		}
	}

	/**
	 * 显示所有的学生信息
	 */
	public void display() {
		for (Student s : stus) {
			display(s);
		}
	}
}

package com.newer.demo2;

import java.util.LinkedList;
import java.util.List;

import com.newer.demo.Student;

public class StudentTest {

	public static void main(String[] args) {

		List<Student> stus=new LinkedList<>();
		StudentManager mgr = new StudentManager(stus);
		// 1、注册一名学生
		Student s = new Student("张三", 90, "1001");
		mgr.addStudent(s);
		s = new Student("李祥", 90, "1002");
		mgr.addStudent(s);
		s = new Student("陈博", 98, "1003");
		mgr.addStudent(s);

		// 2、显示所有的学生信息
		mgr.display();
		System.out.println("*********************************************************");

		// 3、又注册一名学生
		s = new Student("麻六", 94, "1004");
		mgr.addStudent(s);
		mgr.display();
		System.out.println("*********************************************************");

		// 4、查找某名学生
		Student ss = mgr.query("1009");
		// 将结果显示出来
		mgr.display(ss);
		System.out.println("*********************************************************");

		// 5、修改
		// 首先要将修改的学生信息查询出来
		Student stu = mgr.query("1004");
		stu.setName("隔壁老王");
		stu.setScore(30);
		mgr.updateStudent(stu);

		// 6再次查询,确认是否已修改成功
		stu = mgr.query("1004");
		mgr.display(stu);
		System.out.println("*********************************************************");

		//7、显示所有
		mgr.display();
		System.out.println("*********************************************************");

		//8、删除隔壁老王
		mgr.delStudent("1004");
		mgr.display();
		
		
	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值