集合框架一(ArrayList和LinkedList)

  • 如果不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象————————可以使用java集合框架;
  • java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。

在这里插入图片描述

  • List接口存储一组不唯一,有序(插入顺序)的对象
  • Set接口存储一组唯一,无序的对象;
  • Map接口存储一组键值对象,提供key到value的映射;

(1)ArrayList类:

ArrayList 不唯一 有序 遍历效率高

常用操作:
1. List lis = new ArrayList();//声明集合
2. lis.add(Object o);//添加操作
3. lis.add(int index,Object o);//指定位置添加
4. list.size();//返回列表中元素个数
5. for(Objuect o:lis){}//for_each遍历
6. lis.contains(Object o);//判断对象是否存在
7. lis.remove(Object o);//删除指定对象
8. lis.remove(int index);//删除指定位置的元素

常用操作测试:

//抽象父类
public abstract class Pet {
	private String name;
	private int health;
	private int love;

	public Pet() {
		// TODO Auto-generated constructor stub
	}

	public Pet(String name, int health, int love) {
		this.name = name;
		this.love = love;
		this.health = health;
	}

	public String getName() {
		return name;
	}

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

	public int getHealth() {
		return health;
	}

	public void setHealth(int health) {
		this.health = health;
	}

	public int getLove() {
		return love;
	}

	public void setLove(int love) {
		this.love = love;
	}

	public abstract void print();
}
//子类继承父类
public class Dog extends Pet {
	private String stain;

	public String getStain() {
		return stain;
	}

	public void setStain(String stain) {
		this.stain = stain;
	}

	public Dog() {

	}

	public Dog(String name, int health, int love, String strain) {
		super(name,health, love);
		this.stain = strain;
	}

	@Override
	public void print() {
		System.out.println("昵称为:"+getName()+"\t健康值为:"+getHealth()+"\t亲密度为:"+getLove()+"\t品种:"+getStain());
	}
}
import java.util.List;//List接口
import java.util.ArrayList;//

public class Test {
	public static void main(String[] args) {

		Dog dog1 = new Dog("花花", 100, 90, "拉布拉多");
		Dog dog2 = new Dog("青青", 90, 70, "小哈吧");
		Dog dog3 = new Dog("娜娜", 50, 40, "雪橇");
		Dog dog4 = new Dog("妮妮", 40, 30, "松狮");
		Dog dog5 = new Dog("晶晶", 40, 30, "松狮");
		// 1.声明集合
		List lis = new ArrayList();
		// 2添加操作
		lis.add(dog1);// 自动装箱Dog-->Object
		lis.add(dog2);
		lis.add(dog3);
		lis.add(dog4);
		lis.add(0, dog5);// 将dog5对象添加到了集合的索引号为0的位置
		// 3 遍历方式①
		for (int i = 0; i < lis.size(); i++) {
			Dog d = (Dog) lis.get(i);// 拆箱
			d.print();
		}
		// 5删除方式
		lis.remove(0);// 删除索引号为0的对象
		lis.remove(dog3);// 删除指定对象

		// 4 遍历方式②for_each
		System.out.println("******for_each遍历********");
		for (Object obj : lis) {
			((Dog) obj).print();
		}
		//5 contains判断对象是否存在
		if (lis.contains(dog3)) {
			System.out.println("娜娜对象存在");
		} else {
			System.out.println("娜娜对象不存在");
		}
	}
}

测试结果:
在这里插入图片描述
(2)LinkedList类
插入、删除操作频繁时,使用LinkedList提高效率。
LinkedList提供头尾删除和添加的操作。

常用操作:
在这里插入图片描述

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

public class TestLinkedList {
	public static void main(String[] args) {
		Dog dog1 = new Dog("花花", 100, 90, "拉布拉多");
		Dog dog2 = new Dog("青青", 90, 70, "小哈吧");
		Dog dog3 = new Dog("娜娜", 50, 40, "雪橇");
		Dog dog4 = new Dog("妮妮", 40, 30, "松狮");
		Dog dog5 = new Dog("晶晶", 40, 30, "金毛");
		Dog dog6 = new Dog("um", 10, 66, "小可爱");
		// 1.声明集合
		LinkedList lis = new LinkedList();
		// 2添加操作
		lis.add(dog1);// 自动装箱Dog-->Object
		lis.add(dog2);
		lis.add(dog3);
		lis.add(dog4);
		lis.add(0, dog5);// 将dog5对象添加到了集合的索引号为0的位置
		lis.addFirst(dog6);// 添加到第一个位置
		lis.addLast(dog6);// 添加到最后一个位置
		for (Object obj : lis) {
			((Dog) obj).print();
		}

		lis.removeFirst();// 删除第一个对象
		lis.removeLast();// 删除最后一个对象
		System.out.println("获得第一个对象为:");
		((Dog) lis.getFirst()).print();
		System.out.println("获得最后一个对象为:");
		((Dog) lis.getLast()).print();
	}
}

测试结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hudie.

不要打赏!不要打赏!不要打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值