面对对象集合
package day10; public class Student { private String number; private String name; private int age; public Student(String number, String name, int age) { this.number = number; this.age = age; this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package day10; import java.util.List; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; //collection接口:存储一组不唯一,无序的对象 //子接口: 1.List:存储一组不唯一,有序(插入顺序)的对象 // 2.Set:存储一组唯一,无序的对象 //Map接口:存储一组键值对象,提供key(值)到value(值)的映像 public class Demo01 { public static void main(String[] args) { //创建一个集合,长度可变的数组(默认长度为10) List<Object> list = new ArrayList<Object>(); //1:使用集合对数据进行管理操作 //1:存 list.add("a"); list.add("b"); //2:取 System.out.println(list.get(0)); //3:获取集合的长度 System.out.println(list.size()); //4:删除 list.remove(0); /****************练习*****************/ //定义一个学生类:包含学号,姓名,年龄 //定义一个List集合,用于保存学院信息 //数据不少于5个 System.out.println("***************************************"); //泛型集合:指定机集合存储的数据类型 //和数组类似 //定义了Student类型的集合 List<Student> students = new ArrayList<Student>(); students.add(new Student("jredu1","zhangsan1",12)); students.add(new Student("jredu2","zhangsan2",22)); //遍历数组 //方法1:for循环 for (int i = 0; i < students.size(); i++) { Student s = (Student) students.get(i); System.out.println(s.getName()+s.getNumber()+s.getAge()); } //方法2:for-each循环 for(Student s:students){ System.out.println(s.getNumber()); } //方法3:使用迭代器 Iterator<Student> it = students.iterator(); while(it.hasNext()){ Student s = it.next(); System.out.println(s.getNumber()); } /***********************************/ LinkedList<Student> lnk = new LinkedList<Student>(); //1:添加一个集合的数据进来 lnk.addAll(students); for(Student s : lnk){ System.out.println(s.getName()); } //2:在头部添加一个学生 lnk.addFirst(new Student("jredu", "dsdsd", 12)); for(Student s : lnk){ System.out.println(s.getName()); } } }
package day10; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class StudentTest { public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); Student []s = new Student[5]; Scanner input = new Scanner(System.in); for (int i = 0; i < 5; i++) { System.out.println("请输入学号"); String num = input.next(); System.out.println("请输入名字"); String name = input.next(); System.out.println("请输入年龄"); int age = input.nextInt(); s[i] = new Student(num,name,age); list.add(s[i]); } for (int i = 0; i < 5; i++) { Student a =(Student)list.get(i); System.out.println(a.getNumber()+" "+a.getName()+" "+a.getAge()); } input.close(); } }
结果图:
集合框架知识总结
数组
- 长度固定:不能添加多余元素
集合框架
- 接口(规范部分)
- collection:接口存储一组不唯一,无序的对象(不唯一,无序)
- List:接口存储一组不唯一,有序(插入顺序)的对象
- set:接口存储一组唯一,无序的对象
- Map:接口存储一组键值对象,提供key(键)到value(值)的映像
- collection:接口存储一组不唯一,无序的对象(不唯一,无序)
- 类(具体):
- List
-
ArrayList:实现了长度可变的数组,在内存里分配连续的空间。遍历元素和随机访问元素的效率比较高。实例:List students = new ArrayList();
students.add(new Student(“jredu001”, “zhang3”, 20));
students.add(new Student(“jredu002”, “li4”, 25));for(int i=0;i<students.size();i++){ Student s = students.get(i); System.out.println(s.getNo()); }
-
LinkList:采用链表存储方式。插入,删除元素时效率比较高。列子:/************************/
System.out.println(“****LinkedList*********”);
LinkedList lnk = new LinkedList();
//1、添加一个集合的数据进来
lnk.addAll(students);
for(Student s : lnk){
System.out.println(s.getName());
}
System.out.println(“********************”);
//2、在头部添加一个学生
lnk.addFirst(new Student(“jredu003”, “wang5”, 24));for(Student s : lnk){ System.out.println(s.getName()); }
-
使用方法:
方法名 | 说明 |
---|---|
void addFirst(object o) | 在列表的首部添加元素 |
void addLast(object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLirst() | 返回列表中的最后一个元素 |
Object removeFirst() | 删除并返回列表中的第一个元素 |
Object removeLarst() | 删除并返回列表中的最后一个数据 |
- set
1. HashSet
2. TreeSet
- Map
3. 算法:collection提供了对集合进行排序,遍历等多种算法实现
4. 如何遍历
- 方法1:通过for循环和get方法配合实现遍历
- 方法2:通过迭代器Iterator实现遍历