java集合框架

  学习java很重要的一个知识就是集合框架,集合框架就像一个容器(就像装花生的罐子,可以把很多的对象装进去)。

  java中有很多种集合类型,比如ArrayList(列表),Map(键-值对表),Set(集合,类似于数学中的集合)。

  最常见的集合类型就是ArrayList,跟数组类似,但是数组需要预先给定数组长度,而ArrayList不需要,它的实现有个自动扩容机制,会自动扩容。

  ArrayList结合java中的“泛型”使用,什么是泛型呢,我的理解就是在声明ArrayList容器的时候,指定这种容器能装入什么对象(可以装入子类对象),只能装入这种对象,如果不是这种对象的话就会报错。

  集合框架类一般都可以支持泛型,那么可不可以让普通的类也支持泛型呢?答案是可以的,在类后加上<T>表示该类支持泛型,T是Type的缩写,是一个约定俗成,当然也可以用A,B,C之类的表示,但没必要,T简单明了。

比如用双向链表设计一个栈,在声明变量的时候放入一个Hero对象,那么这个栈就只能放入Hero对象了。

package generic;
   
import java.util.HashMap;
import java.util.LinkedList;
 
import charactor.Hero;
import property.Item;
   
public class MyStack<T> {
   
    LinkedList<T> values = new LinkedList<T>();
       
    public void push(T t) {
        values.addLast(t);
    }
   
    public T pull() {
        return values.removeLast();
    }
   
    public T peek() {
        return values.getLast();
    }
       
    public static void main(String[] args) {
        //在声明这个Stack的时候,使用泛型<Hero>就表示该Stack只能放Hero
        MyStack<Hero> heroStack = new MyStack<>();
        heroStack.push(new Hero());
        //不能放Item
        heroStack.push(new Item());
         
        //在声明这个Stack的时候,使用泛型<Item>就表示该Stack只能放Item
        MyStack<Item> itemStack = new MyStack<>();
        itemStack.push(new Item());
        //不能放Hero
        itemStack.push(new Hero());
    }
   
}

  回到ArrayList,遍历这个ArrayList,有三种方法,分别是:for循环,iterator迭代器,for:增强for循环。

注意:只能在迭代器中进行元素的删除,其余两种方法中如过删除会出问题。

Map和Set都是接口,它们的一个实现分别是HashMap和HashSet

HashMap是一个键值对,键不可以重复,值可以重复,什么是键-值对,就是一个关键字对应一个值。

HashSet类似数学中的集合,同一个值只能出现一次。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值