Java集合
概念
概念:
Java中的集合是工具类,可以存储任意数量的具有共同属性的对象,注意与数组的区别
数组和集合的区别:
- 数组的长度是固定的且只能存储一种数据类型;集合的长度是动态扩展的可以存储多种数据类型(泛型会限制)
- 数组可以存储基本数据类型和引用数据类型,但是集合只能是引用类型
应用场景:
- 无法预测存储数据的数量
- 同时存储具有一对一关系的数据
- 需要进行数据的增删
- 数据的重复问题
体系结构
体系结构两种:Collection 与 Map
Collection (主要存储类的对象)有三个子接口:
- List接口 序列 有序且可重复,主要有ArrayList 和LinkedList 实现类
- Queue接口 队列 有序且可重复,主要有LinkedList 实现类
- Set接口 集 无序不可重复,主要有HashSet 和TreeSet 实现类
- ArrayList 的底层实现是数组,所以在内存中是连续存储的,查询速度快,增加和删除速度慢一些。
- LinkedList 底层是基于双向链表的,增加和删除是速度快,查询的速度慢。
- HashSet 是通过哈希表实现的,数据元素可以是null,但是只能有一个null
- TreeSet 是基于二叉树实现的,可以实现数据的自动排序,不允许放空值
Map(存储键值对的数据)有:
- HashMap 和TreeMap 实现类,存储的是键值对<Key,Value>
- HashMap 基于哈希表实现,适用于在Map中插入、删除和定位元素
- TreeMap 基于红黑树实现,适用于自然排序和自定义顺序遍历
实际应用
在List中存储并操作字符串信息
package com.project.set;
import java.util.ArrayList;
import java.util.List;
public class ListDemo1 {
public static void main(String[] args) {
//用ArrayList存储编程语言的名称,并输出
List list=new ArrayList();
list.add("Java");
list.add("C");
list.add("C++");
list.add("Go");
list.add("swift");
//输出列表中元素的个数
System.out.println("列表中元素的个数为:"+list.size());
//遍历输出所有编程语言
System.out.println("________________________________________");
for(int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
//移除列表中的C++
System.out.println();
// list.remove(2);
list.remove("C++");
System.out.println("________________________________________");
System.out.print("移除C++以后的列表元素为:");
for(int i=0;i<list.size();i++) {
System.out.print(list.get(i)+" ");
}
}
}
例题一:使用集合ArrayList对字符串进行存储和管理
import java.util.ArrayList;
import java.util.List;
//使用集合ArrayList对字符串进行存储和管理
public class ListDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
list.add("语文");
list.add("数学");
list.add("英语");
list.add("化学");
list.add("物理");
list.add("生物");
System.out.println("列表中元素的个数为:"+list.size());
for(int i=0;i<list.size();i++) {
System.out.println("第"+(i+1)+"个为"+list.get(i));
}
}
}
例题二:定义一个员工信息类Employee,使用ArrayList对员工信息进行添加和显示
public class Employee {
private int id;
private String name;
private double salary;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Employee() {
super();
// TODO Auto-generated constructor stub
}
public Employee(int id, String name, double salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}
}
public class EmployeeTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee ey1=new Employee(1,"张三",5000.0)