zoukankan      html  css  js  c++  java
  • 【Java】Java中的集合类

    摘要:本文讲解了Java入门中的集合类,包括:ListMapSetQueue

    • 集合类的分类

      • List结构集合类:ArrayList LinkedList Vector Stack
      • Map结构集合类: HashMap HashTable
      • Set结构集合类: HashSet TreeSet
      • Queue结构集合类和Queue接口
    • 用法实例

      • ArrayList的使用
      //基本用法
      ArrayList aa1=new ArrayList();
      
      //取大小
      aa1.size();
      //添加对象:
      XS xs1=new Xs("wukong",15,90);
      aa1.add(xs1);
      
      //ArrayList的遍历
      //基本思路:for循环遍历输出
      //用法:将类对象强转换后输出 
      XS show=(XS)
      aa1.get(i);
      show.getName()
      
      //ArrayList的查询及删除
      //删除:
      aa1.remove(i);
      
      //在任意位置插入对象
      aa1.add(i,xs1);
      
      //定义类对象
      class XS
      {
      private String name;
      private double id;
      private int grade;
      
      XS(String name,double id,int grade)
      {
      this.name=name;
      this.id=id;
      this.grade=grade;
      }
      
      public String getName()
      {
        return name;
      }
      public int getGrade()
      {
        return grade;
      }
      public double getId()
      {
        return id;
      }
      }
    • 实例应用

      
      //实例:简单的食品管理系统
      
      //代码:
      
      package cha04;
      
      import java.util.*;
      
      import java.io.*;
      
      public class L4_2 
      
      {
      
      public static void main(String[] args)  throws Exception
      
      {
      
      Mag mag=new Mag();
      
      BufferedReader sc=new BufferedReader(new InputStreamReader(System.in));
      
      while(true)
      
      {
      
      System.out.println("请按提示选择以下功能");
      
      System.out.println("添加食品请按1");
      
      System.out.println("查找食品信息请按2");
      
      System.out.println("修改食品价格请按3");
      
      System.out.println("删除食品请按4");
      
      System.out.println("退出请按0");
      
      String str=sc.readLine();
      
      if(str.equals("1"))
      
      {
      
      System.out.print("请输入食品编号: ");
      
      int num=Integer.parseInt(sc.readLine());
      
      System.out.print("请输入食品名称: ");
      
      String nam=sc.readLine();
      
      System.out.print("请输入食品价格: ");
      
      double pri=Double.parseDouble(sc.readLine());
      
      Sp sp=new Sp(nam,num,pri);
      
      mag.addSp(sp);
      
      }
      
      else if(str.equals("2"))
      
      {
      
      System.out.print("请输入食品编号: ");
      
      int num=Integer.parseInt(sc.readLine());
      
      mag.spxx(num);
      
      }
      
      else if(str.equals("3"))
      
      {
      
      System.out.print("请输入食品编号: ");
      
      int num=Integer.parseInt(sc.readLine());
      
      System.out.println("请输入新的价格: ");
      
      double pr=Double.parseDouble(sc.readLine());
      
      mag.xgjg(num, pr);
      
      }
      
      else if(str.equals("4"))
      
      {
      
      System.out.print("请输入食品编号: ");
      
      int num=Integer.parseInt(sc.readLine());
      
      mag.delsp(num);
      
      }
      
      else if(str.equals("0"))
      
      {
      
      System.out.println("感谢您的使用,再见!");
      
      System.exit(0);
      
      }
      
      else
      
      {
      
      System.out.println("输入有误!");
      
      }
      
      }
      
      }
      
      }
      
      //定义食品类
      
      class Sp
      
      {
      
      private String na;
      
        private int id;
      
        private double pr;
      
        Sp(String na,int id,double pr)
      
        {
      
        this.na=na;
      
        this.id=id;
      
        this.pr=pr;
      
        }
      
        public String getNa()
      
        {return na;}
      
        public void setNa(String nam)
      
        {this.na=nam;}
      
        public int getId()
      
        {return id;}
      
        public void setId(int id)
      
        {this.id=id;}
      
        public double getPr()
      
        {return pr;}
      
        public void setPr(double pr)
      
        {this.pr=pr;}
      
      }
      
      //食品管理类
      
      class Mag
      
      { 
      
      private ArrayList aa=null;
      
      Mag(){aa=new ArrayList();}
      
      public void addSp(Sp sp)
      
      {
      
      aa.add(sp);
      
      System.out.println("添加食品成功!");
      
      }
      
      public void spxx(int id)
      
      {
      
      int i;
      
      for(i=0;i
      
      {
      
      Sp sp=(Sp)aa.get(i);
      
      if(sp.getId()==id)
      
      {
      
      System.out.println("食品信息为:");
      
      System.out.println("Id: "+sp.getId());
      
      System.out.println("Name: "+sp.getNa());
      
      System.out.println("Price: "+sp.getPr());
      
      }
      
      break;
      
      }
      
      if(i==aa.size())
      
      {
      
      System.out.println("输入错误!");
      
      }
      
      }
      
      public void xgjg(int id,double pr)
      
      {
      
      int i;
      
      for(i=0;i
      
      {
      
      Sp sp=(Sp)aa.get(i);
      
      if(sp.getId()==id)
      
      {
      
      sp.setPr(pr);
      
      System.out.println("食品价格修改成功!");
      
      }
      
      break;
      
      }
      
      if(i==aa.size())
      
      {
      
      System.out.println("没有找到相应的食品!");
      
      }
      
      }
      
      public void delsp(int bh)
      
      {
      
      int i;
      
      if(aa.size()==0)
      
      {
      
      System.out.println("对不起,仓库中已没有任何食品!");
      
      }
      
      for(i=0;i
      
      {
      
      Sp sp=(Sp)aa.get(i);
      
      if(sp.getId()==bh)
      
      {
      
      aa.remove(i);
      
      System.out.println("删除食品成功!");
      
      break;
      
      }
      
        }
      
      if((i==aa.size()) && (aa.size()!=0))
      
      {
      
      System.out.println("对不起,没有该食品!");
      
      }
      
      }
      
      }
      • LinkedList使用
      //基本用法
      LinkedList bb=new LinkedList();
      bb.add(sp);
      
      //区别于ArrayList:
      bb.addFirst(sp0);
      bb.addFirst(sp1);
      //sp0先放入,位于最底层
      bb.addLast(sp0);
      bb.addLast(sp1);
      //sp0先放入,但位于最顶层
      //数据压栈,放入有先后顺序之别,先放进后取出;
      //取出时:
      bb.getFirst();//取出第一个
      bb.getLast();//取出最后一个
      • Vector & Stack
      //基本用法
      Vector cc=new Vector();
      //基本同ArrayList
      Stack dd=new Stack();
      //基本同ArrayList
    • Map 应用

      • HashMap的使用
      //基本用法
      HashMap ee=new HashMap();
      ee.put("001",sp1);//001代表键值,键值唯一不可重复,输入采用的是put而非add
      //输出不需遍历,如下:
      if(ee.containsKey("002"))
      {Sp sp=(Sp)ee.get("002");}
      //注:for循环无法对其进行遍历(因为键值为String类型)
      //遍历方法:
      Iterator it=ee.keySet().iterator();
      while(it.hasNext())
      {
          String key=it.next().toString();
          Sp sp=(SP)ee.get(key);
      }
    • 集合类的比较

      • 键值:是为了唯一标识事物而单独添加的属性。一定不要用事物本身的属性来做键值
      • List没有键值 Map有键值
      • ArrayListHashMap都是线程异步的,所以他们的特点是效率高但安全性低
      • VectorHashtable都是线程同步的,所以他们的特点是效率低但是安全性高。
    • 范型和反射机制

      • 解释:由于类型转换的错误,java虚拟机在编译时不会报错,而在运行时报异常,所以存在安全隐患,为此需要引入泛型机制处理

      • 反射机制是将泛型固定的类的所有方法和成员全部可以显示出来,以供程序员确定编写是否有误。

      ArrayList xs=new ArrayList//泛型可将类型固定
      //反射机制
      class BH
      {
      private L l;
      BH(L l)
      {
          this.l=l;
      }
      public void lxmc
      {
          System.out.println(l.getClass().getName()//获取类型名称);
          Method []a=l.getClass().getDeclaredMethods();//获取类中所有方法;
      }
      //主函数:
      BH<类名> bh=new BH<类名>(对象);
      }
  • 相关阅读:
    jsp mysql 实现客户端简单分页查询
    jsp mysql 实现客户端简单数据的修改和删除
    jsp 简单把数据库数据,展示在网页
    XML当做数据库,完成增删查
    xml的增删查 dom的增改查 复杂注释
    修改目录下所有文件时间
    打开调试模式
    强化学习笔记4:无模型预测 model-free prediction
    强化学习笔记6:值函数估计Value function Approximation
    Declarative Pipeline语法介绍
  • 原文地址:https://www.cnblogs.com/yczha/p/13160278.html
Copyright © 2011-2022 走看看