【Java学习笔记】Java 集合框架(1)

→教程网站

1 存放多个对象

1.1数组

声明一个数组用于存放对象,会浪费或放不下

package collection;

import charactor.Hero;

public class TestCollection {
    public static void main(String[] args){
        Hero hero[] = new Hero[10];
        //声明长度为10的数组用于存放英雄
        //超过数组长度会报错
        hero[9] = new Hero("Tim");
    }
}

1.2 ArrayList

为解决数组的局限性问题,引入容器类,最常见的容器类为ArrayList。它可以随增加扩大

package collection;

import charactor.Hero;

import java.util.ArrayList;

public class TestCollection {
   @SuppressWarnings("rawtypes")
    public static void main(String[] args){
       ArrayList heros = new ArrayList();
       heros.add(new Hero("Tim"));
       System.out.println(heros.size());

       heros.add(new Hero("Jimmy"));
       System.out.println(heros.size());
   }
}

2 ArrayList的常用方法

add 增加
contains 判断是否存在
get 获取指定位置的对象
indexOf 获取对象所处的位置
remove 删除
set 替换
size 获取大小
toArray 转换为数组
addAll 把另一个容器所有对象都加进来
clear 清空

package collection;

import charactor.Hero;

import java.util.ArrayList;

public class TestCollection {
   @SuppressWarnings("rawtypes")
    public static void main(String[] args){
       ArrayList heros = new ArrayList();
       //直接add对象
       for (int i = 0; i < 5; i++) {
           heros.add(new Hero("hero"+i));
       }
       //在特殊位置插入对象
       Hero oneHero = new Hero("Hero one");
       heros.add(3,oneHero);
       System.out.println(heros);

       System.out.println(heros.contains(oneHero));
       System.out.println("索引为3的对象为"+heros.get(3));
       System.out.println("hero4的索引为"+heros.indexOf("hero4"));

       heros.remove(1);//根据下标删除
       System.out.println("删除索引为1的对象后:"+heros);
       heros.set(2,new Hero("hero new"));//根据索引替换对象
       System.out.println("替换索引为2的对象后:"+heros);
       Hero hs[] = (Hero[])heros.toArray(new Hero[]{});//转化为数组
       System.out.println("转化为数组:"+hs);

       //addAll把另一个容器中的对象加入进来
      ArrayList addHeros = new ArrayList();
      addHeros.add(new Hero("Hero A"));
      addHeros.add(new Hero("Hero B"));

      heros.addAll(addHeros);
      System.out.println("加入另一个容器中的对象后输出为:"+heros);

   }
}

输出结果

[hero0, hero1, hero2, Hero one, hero3, hero4]
true
索引为3的对象为Hero one
hero4的索引为-1
删除索引为1的对象后:[hero0, hero2, Hero one, hero3, hero4]
替换索引为2的对象后:[hero0, hero2, hero new, hero3, hero4]
转化为数组:[Lcharactor.Hero;@65ab7765
加入另一个容器中的对象后输出为:[hero0, hero2, hero new, hero3, hero4, Hero A, Hero B]

2.1List接口

package collection;

import charactor.Hero;

import java.util.ArrayList;
import java.util.List;

public class TestCollection {

   public static void main(String[] args){
      List heros = new ArrayList();
      heros.add(new Hero("Tim"));
      System.out.println(heros.size());
   }

}

3 泛型

不指定泛型的容器,可以存放任何类型的元素
指定了泛型的容器,只能存放指定类型的元素以及其子类

4 遍历(for/iterator/for:)

4.1迭代器(iterator)

package collection;

import charactor.Hero;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestCollection {

   public static void main(String[] args){
     List<Hero> heros = new ArrayList<Hero>();

     for(int i = 0; i < 5; i++){
        heros.add(new Hero("hero name"+i));
     }


      Iterator<Hero> it = heros.iterator();
      //使用while的iterator
     while (it.hasNext()){
        Hero h = it.next();
        System.out.println(h);
     }

     //使用for的iterator
      for(Iterator<Hero> iterator = heros.iterator();iterator.hasNext();){
         Hero hero = (Hero) iterator.next();
         System.out.println(hero);
      }
   }

}

5 LinkedList

5.1 双向链表Deque

除了实现了List接口外,LinkedList还实现了双向链表结构Deque,可以很方便的在头尾插入删除数据

package collection;

import charactor.Hero;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class TestCollection {

   public static void main(String[] args) {
      LinkedList<Hero> ll = new LinkedList<Hero>();
      //在头部或尾部插入数据
      ll.addLast(new Hero("hero1"));
      ll.addLast(new Hero("hero2"));
      ll.addLast(new Hero("hero3"));
      ll.addLast(new Hero("hero4"));
      //查看最前面或者后面的英雄
      System.out.println(ll.getFirst());
      System.out.println(ll.getLast());
      //去除最前面或最后面的英雄
      ll.removeFirst();
      ll.removeLast();
   }
}

5.2队列 Queue

offer 在最后添加元素
poll 取出第一个元素
peek 查看第一个元素

package collection;

import charactor.Hero;


import java.util.LinkedList;

public class TestCollection {

   public static void main(String[] args) {
      LinkedList<Hero> ll = new LinkedList<Hero>();
      //用offer插入数据
      ll.offer(new Hero("hero1"));
      ll.offer(new Hero("hero2"));
      ll.offer(new Hero("hero3"));

      System.out.println(ll);
      //peek查看第一个元素
      ll.peek();
      //poll移除第一个元素
      ll.poll();
      System.out.println(ll);

   }
}

输出

[hero1, hero2, hero3]
[hero2, hero3]

5.3用LinkedList实现Stack栈

Stack接口


package collection;

import charactor.Hero;

public interface Stack
{
    public void push(Hero h);
    public void pull();
    public void peek();
}

MyStack类

package collection;

import charactor.Hero;

import java.util.LinkedList;

public class MyStack implements Stack {

    LinkedList<Hero> ll = new LinkedList<Hero>();

    @Override
    public void push(Hero h){
        ll.addLast(h);
    }

    @Override
    public void peek(){
        ll.getLast();
    }

    @Override
    public void pull(){
        System.out.println(ll.getLast());
        ll.removeLast();
    }

    public static void main(String[] args){
        MyStack heroStack = new MyStack();
        for (int i = 0; i <5 ; i++) {
            Hero h =new Hero("hero"+i);
            heroStack.push(h);
            System.out.println(h);
        }

        for(int i = 0; i <5 ;i++){
            heroStack.pull();
        }
    }

}

# 高校智慧校园解决方案摘要 智慧校园解决方案是针对高校信息化建设的核心工程,旨在通过物联网技术实现数字化校园的智能化升级。该方案通过融合计算机技术、网络通信技术、数据库技术和IC卡识别技术,初步实现了校园一卡通系统,进而通过人脸识别技术实现了更精准的校园安全管理、生活管理、教务管理和资源管理。 方案包括多个管理系统:智慧校园管理平台、一卡通卡务管理系统、一卡通人脸库管理平台、智能人脸识别消费管理系统、疫情防控管理系统、人脸识别无感识别管理系统、会议签到管理系统、人脸识别通道管理系统和图书馆对接管理系统。这些系统共同构成了智慧校园的信息化基础,通过统一数据库和操作平台,实现了数据共享和信息一致性。 智能人脸识别消费管理系统通过人脸识别终端,在无需接触的情况下快速完成消费支付过程,提升了校园服务效率。疫情防控管理系统利用热成像测温技术、视频智能分析等手段,实现了对校园人员体温监测和疫情信息实时上报,提高了校园公共卫生事件的预防和控制能力。 会议签到管理系统和人脸识别通道管理系统均基于人脸识别技术,实现了会议的快速签到和图书馆等场所的高效通行管理。与图书馆对接管理系统实现了一卡通系统与图书馆管理系统的无缝集成,提升了图书借阅的便捷性。 总体而言,该智慧校园解决方案通过集成的信息化管理系统,提升了校园管理的智能化水平,优化了校园生活体验,增强了校园安全,并提高了教学和科研的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值