Java基础——对象容器(顺序、集合、Hash)
扩展:
For-each循环
for (String s: str) {
System.out.println(s);
}
等同于
for (int i = 0; i < str.length; i++) {
String s = str[i];
System.out.println(s);
}
是J2SE 1.5提供的另一种形式的for循环,可以用来处理不知道str长度的情况
顺序容器
泛型容器类 ArrayList
ArrayList<String> notes = new ArrayList<String>
容器的类型ArrayList 元素的类型String
例子:
package notes;
import java.util.ArrayList;
public class NotesBook {
private ArrayList<String> notes = new ArrayList<String>(); //创建容器:notes
public void add(String s){ //添加方法
notes.add(s);
}
public void add(String s, int Location){
notes.add(Location, s);
}
public int getSize(){ //获取数量
return notes.size();
}
public String getNote(int index){ //通过索引来查找
return notes.get(index);
}
public void removeNote(int index){ //通过索引删除
notes.remove(index) ;
}
public String[] list(){
String[] a = new String[notes.size()]; //获取一个实际的数组(包含了列表的内容)
// for( int i=0;i<notes.size();i++){
// a[i]=notes.get(i);
// }
notes.toArray(a); //相当于以上循环
return a;
}
public static void main(String[] args) {
NotesBook nb = new NotesBook();
nb.add("first");
nb.add("second");
nb.add("thrid", 1);
System.out.println(nb.getSize());
System.out.println(nb.getNote(1));
System.out.println("remove后-------------------------");
nb.removeNote(1);
String[] a =nb.list();
for(String s : a){ //处理不知道s长度的情况
System.out.println(s);
}
}
}
对象数组
对象数组中的每个元素都是对象的管理者而非对象本身。
For-each循环
class Value{
private int i;
public void set(int i){
this.i=i;
}
public int get(){
return i;
}
}
....
public static void main(String[] args) {
Value[] a = new Value[10];
for( int i=0; i<a.length; i++){
a[i] = new Value();
a[i].set(i);
}
for(Value v : a){
System.out.println(v.get());
v.set(0); //在此设置为0
}
for(Value v : a){
System.out.println(v.get());
}
}
}
容器类也是可以使用for-each
ArrayList<String> b = new ArrayList<String>();
b.add("first");
b.add("second");
for (String s : b){
System.out.println(s);
}
集合容器(set) 就是数学上的集合set(唯一性 没有排序)
格式:HashSet<String> s = new HashSet<String>();
区别:
ArrayList<String> b = new ArrayList<String>();
b.add("first");
b.add("second");
b.add("first");
for (String s : b){
System.out.println(s);
}
System.out.println("------我是分割线------");
HashSet<String> s = new HashSet<String>();
s.add("F1");
s.add("S2");
s.add("F1");
for(String k : s){
System.out.println(k);
}
更加直观的直接输出s 结果如下:
而这两个容器包括了普通如上value类中加了(public String toString(){return “”+i})
Hash表 也叫做散列表HashMap<k,v> 键是唯一的输出最后一个
Java的Hash表可以以任何实现了hash()函数的类的对象做值来存放对象。
private HashMap<Integer,String> cname = new HashMap<Integer,String>();
package notes;
import java.util.HashMap;
import java.util.Scanner;
public class Corn {
private HashMap<Integer,String> cname = new HashMap<Integer,String>();
public Corn(){ //构造
cname.put(1, "penny");
cname.put(10, "dime");
cname.put(25, "quarter");
cname.put(50, "half-dolar");
System.out.println(cname.keySet().size());
for(Integer k: cname.keySet()){
String s =cname.get(k);
System.out.println(s);
}
}
public String getName( int amount){
if(cname.containsKey(amount)){
return cname.get(amount);
}else{
return "NOT FOUND";
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int amount =in.nextInt();
Corn corn =new Corn();
String name= corn.getName(amount);
System.out.println(name);
}
}
Java基础——对象容器(顺序、集合、Hash)的更多相关文章
- java基础之容器、集合、集合常用方法
一.容器(Collection):数组是一种容器,集合也是一种容器 java编程中,装其他各种各样的对象(引用类型)的一种东西,叫容器 注意: 1.数组的长度是固定的 2.集合:长度不固定, 可以随时 ...
- JAVA基础第五章-集合框架Map篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java基础-引用数据类型之集合(Collection)
Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...
- Java中的容器(集合)之ArrayList源码解析
1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...
- Java中的容器(集合)之HashMap源码解析
1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- 《java基础——对象的拷贝》
java基础--对象的拷贝 一.浅拷贝: 规则: 1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化. 2. 浅拷贝相当于两个对象共用一套实例. 格式: 类名 对象 ...
- [ Java学习基础 ] Java的对象容器 -- 集合
当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...
- Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历
1. Collection集合存储学生对象并遍历: 需求:存储自定义对象并遍历Student(name,age) 分析: (1)创建学生类 (2)创建集合对象 (3)创建学生对象 (4)把学生对象添加 ...
随机推荐
- 选择数据库管理系统(DBMS)时主要考虑的因素
选择数据库管理系统时应从以下几个方面予以考虑: (1) 构造数据库的难易程度. 需要分析数据库管理系统有没有范式的要求,即是否必须按照系统所规定的数据模型分析现实世界,建立相应的模型:数据库管理语句是 ...
- Python 属性与方法 概念理解
属性与方法 attribute(属性)是class(类)中的成员变量,而method(方法)则是class(类)中的function(函数). 也可以理解,属性就类变量,方法就是类函数. 类中的变量就 ...
- 有时间了解一下Spark SQL parser的解析器架构
1:了解大体架构 2:了解流程以及各个类的职责 3:尝试编写一个
- 【转】svn冲突问题详解 SVN版本冲突解决详解
(摘自西西软件园,原文链接http://www.cr173.com/html/46224_1.html) 解决版本冲突的命令.在冲突解决之后,需要使用svnresolved来告诉subversion冲 ...
- 1-tomcat简介
一.tomcate的目录结构说明: 1.bin:存放服务器启动和关闭的命令文件.2.conf:存放服务器的配置信息文件3.lib:存放服务器自身需要的所有jar文件,也称为全局jar文件(只要部署在当 ...
- 摒弃FORM表单上传图片,异步批量上传照片
之前作图像处理一直在用form表单做图片数据传输, 个人感觉low到爆炸而且用户体验极差,现在介绍一个一部批量上传图片的小技巧,忘帮助他人的同时也警醒自己在代码的编写时不要只顾着方便,也要考虑代码的健 ...
- ajax全局事件
作用:当你的页面存在很多ajax事件的话,我们有一些信息是公共的,可以复用,我们可以用全局事件进行编写,因为每一个ajax事件调用,都会触发ajax全局事件. jquery的ajax方法的全部全局事件 ...
- BZOJ1023 SHOI2008 仙人掌图 仙人掌、单调队列
传送门 求仙人掌的直径,可以由求树的直径进行拓展,只需要在环上特殊判断. 沿用求树的直径的DP,对于一条不在任何环内的边,直接像树的直径一样转移,然后考虑环的影响. 设环长为\(cir\),在\(df ...
- java 加密 解密 Illegal key size
java.security.InvalidKeyException: Illegal key size 今天遇到一个奇怪的问题. 自己做的加签验签功能已经没有问题了,本地测试通过,同事放到服务器上 ...
- Vue文件中引入img 路径写法
把图片路径写在data里面,然后渲染模板的两种方式 方案1.在data使用require将图片进入,写法如下 logo: require('../asset/admin/logo.png') 在模板 ...