Java学习系列——第3课Java 高级教程

Wesley13
• 阅读 586

java数据结构

  1)【概述】

  Java的工具包提供了强大的数据结构在的Java中的数据结构主要包括以下几种接口和类:

  • 枚举(枚举)

  • 位集合(位集合)

  • 向量(矢量)

  • 栈(栈)

  • 字典(词典)

  • 哈希表(哈希表)

  • 属性(属性)

  以上这些类是传统遗留的,在Java2的中引入了一种新的框架 - 集合框架(集合),我们后面再讨论。

  2)枚举(枚举)

    a)【定义】枚举(枚举)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。枚举(枚举)接口定义了一种从数据结构中取回连续元素的方式

    B)【代码举例】

Java学习系列——第3课Java 高级教程

import java.util.Vector; import java.util.Enumeration; public class EnumerationTester {public static void main(String args []){        枚举天数;        Vector dayNames = new Vector();        dayNames.add( “星期天”);        dayNames.add( “星期一”);        dayNames.add( “星期二”);        dayNames.add( “星期三”);        dayNames.add( “星期四”);        dayNames.add( “星期五”);        dayNames.add( “星期六”);        days = dayNames.elements(); while(days.hasMoreElements()){           System.out.println(days.nextElement());        }     }  }

EnumerationTester.java

     运行结果:

周日 星期一 星期二 星期三 星期四 星期五 星期六

运行结果

  3)位集合(位集合)

    A)【定义】

      位集合类实现了一组可以单独设置和清除的位或标志。该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一 “位”,然后对位进行适当的设置或清除,就可以对布尔值进行操作了。

如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。

    B)【代码举例】

Java学习系列——第3课Java 高级教程

import java.util.BitSet; public class BitSetDemo {public static void main(String args []){       BitSet bits1 = new BitSet(16);       BitSet bits2 = new BitSet(16);            //设置一些位      (int i = 0; i <16; i ++){if((i%2)== 0)bits1.set(i); if((i%5)!= 0)bits2.set(i);       }       System.out.println(“bit1:”中的初始模式);       的System.out.println(BITS1);       System.out.println(“\ nInitial pattern in bits2:”);       的System.out.println(BITS2); // AND bits       bits2.and(bits1);       System.out.println(“\ nbits2 AND bits1:”);       的System.out.println(BITS2); // OR bits       bits2.or(bits1);       System.out.println(“\ nbits2 OR bits1:”);       的System.out.println(BITS2); // XOR bits       bits2.xor(bits1);       System.out.println(“\ nbits2 XOR bits1:”);       的System.out.println(BITS2);    }  }

BitSetDemo.java

  运行结果:

Java学习系列——第3课Java 高级教程

位1中的初始模式: { 0,2,4,6,8,10,12,14 }位2中的 初始模式: { 1,2,3,4,6,7,8,9,11,12,13 , 14}  位 2 AND位1:{ 2,4,6,8,12,14 } 位2  OR位1: {  0,2,4,6,8,10,12,14 } 位2 XOR位1: {}

运行结果

 4)向量(Vector)

  A)【定义】

    向量(向量)类和传统数组非常相似,但是矢量的大小能根据需要动态的变化。

    和数组一样,矢量对象的元素也能通过索引访问。

    使用矢量类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。

  B)【代码实例】

Java学习系列——第3课Java 高级教程

import java.util。*; public class VectorDemo {public static void main(String args []){//初始大小为3,增量为2        Vector v = new Vector(3,2);        System.out.println(“初始大小:”+ v.size());        System.out.println(“初始容量:”+        v.capacity());        v.addElement(new Integer(1));        v.addElement(new Integer(2));        v.addElement(new Integer(3));        v.addElement(new Integer(4));        System.out.println(“四个添加后的容量:”+            v.capacity());        v.addElement(new Double(5.45));        System.out.println(“Current capacity:”+        v.capacity());        v.addElement(new Double(6.08));        v.addElement(new Integer(7));        System.out.println(“Current capacity:”+        v.capacity());        v.addElement(new Float(9.4));        v.addElement(new Integer(10));        System.out.println(“Current capacity:”+        v.capacity());        v.addElement(new Integer(11));        v.addElement(new Integer(12));        System.out.println(“First element:”+           (Integer)v.firstElement());        System.out.println(“Last element:”+           (Integer)v.lastElement()); if(v.contains(new Integer(3)))          System.out.println(“Vector contains 3”); //枚举向量中的元素。       枚举vEnum = v.elements();        System.out.println(“\ nElements in vector:”); while(vEnum.hasMoreElements())          System.out.print(vEnum.nextElement()+“”);        的System.out.println();     }  }

VectorDemo.java

    运行结果:

Java学习系列——第3课Java 高级教程

初始容量:0  初始容量:3  四次加载后的容量:5  电流容量:5  电流容量:7  电流容量:9  第一元素:1  最后元素:12  矢量包含3.矢量中的 元素: 1 2 3 4 5.45 6.08 7 9.4 10 11 12

运行结果

5)栈(堆栈)

  A)【定义】

    栈(堆栈)实现了一个后进先出(LIFO)的数据结构。

    你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。

    当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。

  B)【代码实例】

Java学习系列——第3课Java 高级教程

import java.util。*; public class StackDemo {static void showpush(Stack st,int a){        st.push(new Integer(a));        System.out.println(“push(”+ a +“)”);        System.out.println(“stack:”+ st);     } static void showpop(Stack st){        System.out.print(“pop  - >”);        整数a =(整数)st.pop();        的System.out.println(一);        System.out.println(“stack:”+ st);     } public static void main(String args []){        Stack st = new Stack();        System.out.println(“stack:”+ st);        showpush(st,42);        showpush(st,66);        showpush(st,99);        showpop(ST);        showpop(ST);        showpop(ST); 尝试{           showpop(st);        } catch(EmptyStackException e){           System.out.println(“empty stack”);        }     }  }

StackDemo.java

    运行结果:

Java学习系列——第3课Java 高级教程

堆栈:[]  推送(42) 堆栈:[42]  推(66) 堆栈:[42,66]  推(99) 堆栈:[42,66,99]  弹出- > 99  堆栈:[42,66]  弹出- > 66  堆栈:[42]  pop  - > 42  堆栈:[]  pop  - >空堆栈

运行结果

6)字典(词典)

  A)【定义】

    字典(字典)类是一个抽象类,它定义了键映射到值的数据结构。

    当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用字典。

    由于字典类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。

7)哈希表(哈希表)

  A)【定义】  

    Hashtable的类提供了一种在用户定义键结构的基础上来组织数据的手段。

    例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。

  B)【代码实现】

Java学习系列——第3课Java 高级教程

import java.util。*; public class HashTableDemo {public static void main(String args []){//创建一个哈希映射       Hashtable balance = new Hashtable();        枚举名称        字符串str 双平;        balance.put(“Zara”,new Double(3434.34));        balance.put(“Mahnaz”,new Double(123.22));        balance.put(“Ayan”,新双人(1378.00));        balance.put(“Daisy”,new Double(99.22));        balance.put(“Qadir”,new Double(-19.08)); //显示哈希表中的所有余额。       names = balance.keys(); while(names.hasMoreElements()){           str =(String)names.nextElement();           System.out.println(str +“:”+           balance.get(str));        }        System.out.println(); //将1,000存入Zara的帐户       bal =((Double)balance.get(“Zara”))。doubleValue();        balance.put(“Zara”,new Double(bal + 1000));        System.out.println(“Zara的新余额:”+        balance.get(“Zara”));     }  }

HashTableDemo.java

  运行结果如下:

Java学习系列——第3课Java 高级教程

Qadir:-19.08  Zara:3434.34  Mahnaz:123.22  Daisy:99.22  Ayan:1378.0  Zara的新余额:4434.34

运行结果

8)哈希表(哈希表)

  A)【定义】

    属性继承于Hashtable.Properties类表示了一个持久的属性集。属性列表中每个键及其对应值都是一个字符串。

    属性类被许多Java类使用。例如,在获取环境变量时它们就作为System.getProperties()方法的返回值。

  B)【代码实现】

Java学习系列——第3课Java 高级教程

import java.util。*; public class PropDemo {public static void main(String args []){        Properties capitals = new Properties();        设置状态        字符串str               capitals.put(“Illinois”,“Springfield”);        capitals.put(“密苏里州”,“杰斐逊城”);        首都(“华盛顿”,“奥林匹亚”);        capitals.put(“California”,“Sacramento”);        capitals.put(“Indiana”,“Indianapolis”); //在哈希表中显示所有州和首都。       states = capitals.keySet(); //获取键的set-view        Iterator itr = states.iterator(); while(itr.hasNext()){           str =(String)itr.next();           System.out.println(“”+              str + “的大写是”+ capitals.getProperty(str)+“。”);        }        System.out.println(); //寻找状态不在列表中 - 指定默认的       str = capitals.getProperty(“Florida”,“Not Found”);        System.out.println(“佛罗里达的首都是”            + str +“。”);     }  }

PropDemo.java

  运行结果如下:

Java学习系列——第3课Java 高级教程

密苏里州首府是杰斐逊城。 伊利诺伊州首府是斯普林菲尔德。 印第安纳州首府是印第安纳波利斯。 加利福尼亚的首都是萨克拉门托。 华盛顿的首府是奥林匹亚。 佛罗里达州的首府未找到。

运行结果

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这