目录
30.1什么是集合?
30.1.2为什么使用集合
30.1.3自己创建一个集合类
30.1.3 集合框架有哪些?
30.1.2使用ArrayList集合
30.2增加元素
30.3查询的方法
30.4删除
30.5 修改
30.6泛型
30.1什么是集合?
- 我们之前讲过数组,数组中它也可以存放多个元素。
- 集合就是一个容器,里面可以存放若干个元素。
30.1.2为什么使用集合
数组的长度是固定,而且数组中数据类型必须统一。
int[] arr=new int[10];
引入了集合。可以存放。
集合它是一个类,只是该类中存在增加元素,删除元素,修改元素,统计元素的个数等方法。
30.1.3自己创建一个集合类
它也可以无限的增加元素,增加任意类型的元素。
package demo01;
import java.util.Arrays;
public class MyArray {
//存放集合元素的
private Object [] arr=new Object[3];
//表示集合中元素的个数
private int size;
/**
* 添加元素
* @param o
*/
public void add(Object o){
//判断数组是否已满。
if(size==arr.length){
//扩容--并把原来数组中得元素放入新数组
arr=Arrays.copyOf(arr,arr.length*2);
}
arr[size]=o;
size++;
}
/**
* 根据下标获取指定元素
* @param index
* @return
*/
public Object get(int index){
if(index<0||index>=size){
throw new RuntimeException("给定下标越界");
}
return arr[index];
}
//获取集合的长度--元素的个数
public int size(){
return size;
}
}
你都可以想到创建一个类,该类可以不断的增加元素,jdk官方一定也会想到创建一个类,可以不断的增加元素。官方会根据不同的数据结构创建不同的类。而官方提供的这些类---集合框架。
30.1.3 集合框架有哪些?
底层也是使用数组。允许元素重复,而且根据下标获取元素,查询效率非常高。删除和添加慢。
30.1.2使用ArrayList集合
必须创建该类的对象。
public ArrayList(){} 默认分配数组的个数10个
public ArrayList(int size){} 人为指定数组元素的个数
30.2增加元素
public class Test02 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("java01");
list.add("java02");
list.add(15);
list.add(25.6);
list.add(true);//往集合尾部追加。
list.add(3,"欧炜健");
list.add(3,"赖林龙");
System.out.println(list);
}
}
30.3查询的方法
package demo02;
import java.util.ArrayList;
import java.util.Objects;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add(new People("赖林龙",18));
list.add(new People("胡荣纯",17));
list.add(new People("吴韩煜",19));
list.add(new People("赖林龙",18));
boolean is = list.contains(new People("胡荣纯", 17));
System.out.println(is); //equals方法比较。
int i = list.indexOf(new People("吴韩煜", 19));
System.out.println("第一次出现的位置:"+i);
//求集合中元素的个数:
int size = list.size();
System.out.println("集合中元素的个数:"+size);
//遍历集合
for(int a=0;a<list.size();a++){
Object o = list.get(a);
System.out.println(o);
}
System.out.println("=================================增强循环==========================");
for (Object o : list) {
System.out.println(o);
}
}
}
class People{
private String name;
private int age;
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o){
//this//表示调用当前方法的对象
//重写equals
if(this==o){
return true;
}
if(! (o instanceof People)){
return false;
}
People p= (People) o;
if(p.getAge()==this.getAge()&&p.getName().equals(this.getName())){
return true;
}
return false;
}
public People() {
}
public People(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
定义一个学生类: name,school,age
创建一个集合对象ArrayList. 里面存放5个学生。
<1>判断某个学生对象是否在集合中
<2>查看指定学生第一次在集合中出现的位置
<3>求集合中元素的个数
<4>遍历集合---使用两种方式
30.4删除
ArrayList list=new ArrayList();
list.add(new People("赖林龙",18));
list.add(new People("胡荣纯",17));
list.add(new People("吴韩煜",19));
list.add(new People("赖林龙",18));
list.add(new People("吴韩煜",19));
list.remove(3);//根据下标删除指定的元素
list.remove(new People("吴韩煜",19));//根据内容移除,第一个。
list.clear();//清空内容
System.out.println("=================================增强循环==========================");
for (Object o : list) {
System.out.println(o);
}
30.5 修改
ArrayList list=new ArrayList();
list.add(new People("赖林龙",18));
list.add(new People("胡荣纯",17));
list.add(new People("吴韩煜",19));
list.add(new People("赖林龙",18));
list.add(new People("吴韩煜",19));
list.set(2,new People("张学友",16));//修改指定位置上的内容
List list1 = list.subList(1, 3); //截取集合
System.out.println(list1);
30.6泛型
<E>:表示泛型标识符---在创建类对象时指定数据类型,如果没有指定那么该类型为Object.
public class Test03 {
public static void main(String[] args) {
//规定集合中存放的数据类型。--获取元素是就是对应的类型。
ArrayList<People> list=new ArrayList<>();
list.add(new People("赖林龙",18));
list.add(new People("胡荣纯",17));
list.add(new People("吴韩煜",19));
list.add(new People("无效五",19));
list.add(new People("赖林龙",18));
list.add(new People("吴志雄",18));
list.add(new People("吴韩煜",19));
list.add(new People("吴三桂",18));
//找到集合中所有姓吴的
for (People people : list) {
boolean b = people.getName().startsWith("吴");
if(b){
System.out.println(people);
}
}
}
}