Java初学几天的总结——一个菜鸡的自我学习之路(3)

本文深入探讨Java中的顺序容器ArrayList及HashSet的使用方法,详细讲解了如何通过这些容器进行数据存储、检索与删除操作。此外,还介绍了Hash表的实现原理及其在实际应用中的优势,包括如何利用HashMap进行高效的数据查找。
摘要由CSDN通过智能技术生成

第七课,接口设计以及顺序容器:

package notebook;

import java.util.ArrayList;

class Value{
 	private int i;
 	public void set( int i ) { this.i = i; }
 	public int get() { return i; }
}
public class NoteBook {
 
 	private ArrayList<String> notes = new ArrayList<String>();	//范型类容器
 	//ArrayList可以为容器类型,String为容器里存储的数据类型
 
 	public void add(String s) {
  		notes.add(s); 	//ArrayList容器自带的函数功能,将数据存入容器中
 	}

	public void add(String s, int location) {
  		notes.add(location, s);
 	}
 
 	public int getSize() {
  		return notes.size();	//ArrayList函数自带的功能,读取容器中的数据个数
 	}
 
 	public String getNote(int index) {
  		return notes.get(index);
 	}

	public void removeNote(int index) {
  		notes.remove(index);	//ArrayList容器所具有的remove函数自带有去除出错报错功能
 	}
 
// 	public void list() {
//  		System.out.println();
// 	}

	//便于将输出的字符串数组进行其他用途
 	public String[] list() {
		Value[] a = new Value[10]; //创建对象数组,每一个数组中都指向一个还未new的对象
  		for( int i=0; i<a.length; i++ ){
   			a[i] = new Value();	//这个步骤必不可少,必须要将每一个数组中的对象new出来
   			a[i].set(i);
  		}//对象数组的创建和初始化
  		String[] ia = new String[notes.size()];
  		for( int i=0; i<ia.length; i++){
   			ia[i] = ""+i;
  		}
  	//Java中有两种数组,一种是基础数组,一种是对象数组
  	//基础数组是类似于C语言中的数组指针,例如int[] a = new int[10];
  	//是指创建了一个存放十个元素的数组,由一个管理者a来管理这个数组,a是这个不知道位置的数组的的管理者而非所有者
  	//例如String[] a = new String[10];
 	//是指创建了一个可以存放十个指向不同的字符串,数组指针每一个元素都指向一个字符串
  	//String s也是这样,s是管理着一个字符串的管理者
//  		for( int i=0; i<notes.size(); i++) {//第一种方法
//   			a[i] = notes.get(i);
//  		}
  
  		//第二种方法
  		notes.toArray(a); //自动将数组a中的内容填充为notes的内容数据
  
  		return a;
	}
	public static void main(String[] args) {
  		NoteBook nb = new NoteBook();
  		nb.add("first");
  		nb.add("second");
  		nb.add("third", 1);
  		System.out.println(nb.getSize());
  		System.out.println(nb.getNote(0));
  		System.out.println(nb.getNote(1));
  		nb.removeNote(1);
  		String[] a = nb.list();
  		for(String s : a) { 	//这个为for-each循环,对于容器来说也是可以用的
  					//对于数组(容器)a里面的每一个String s(改括号中的书写格式仅用于遍历修改什么的,不可用于其他用途)
   			System.out.println(s);
  		}
  	}
  }

第八课,容器:

package notebook;

import java.util.ArrayList;
import java.util.HashSet;

class Value {
 	private int i;
 	public void set(int i) {  this.i = i; }
 	public int get() { return i;}
 	public String toString() {return ""+i; }//所有的类里面只要加上这一条语句就可以直接输出对象
}
public class NoteBook {
 
 	private ArrayList<String> notes = new ArrayList<String>();
 
 	public String[] list() {
 		int ia[] = new int[10];
  		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) {
  		Value b = new Value();
  		b.set(10);
  		b.get();
  		System.out.println(b);

		ArrayList<String> a = new ArrayList<String>();
  		a.add("first");
  		a.add("second");
  		a.add("first");
  		System.out.println(a);
  		System.out.println("----------------");
  		HashSet<String> s = new HashSet<String>();
  		s.add("first");
  		s.add("second");
  		s.add("first");
  		System.out.println(s);
  	}
  }

第九课,Hash表:

package coins;

import java.util.HashMap;
import java.util.Scanner;

public class Coin {
 	private HashMap<Integer, String> coinnames = new HashMap<Integer, String>();
 
 	public Coin() {
 		coinnames.put(1, "penny");
  		coinnames.put(10, "dime");
  		coinnames.put(25, "quarter");
  		coinnames.put(50, "half-dollar");	//两个50同时存在,只会存在最后一次输入的“五毛”
  		coinnames.put(50, "五毛");
  		System.out.println(coinnames.keySet().size());
  		//keySet是将哈希表中的所有关键字(key)打包成一个集合,在用size获取具体的个数
  		System.out.println(coinnames);
  		//哈希表的遍历
  		for( Integer k : coinnames.keySet()) {
   			String s = coinnames.get(k);
   			System.out.println(s);
  		}
  	}
  	public String getName( int amount ) {
  		if( coinnames.containsKey(amount) ){
   			return coinnames.get(amount);
  		}else {
   			return "Not Found!";
  		}
	}

	public static void main(String[] args) {
  		Scanner in = new Scanner(System.in);
  		int amount = in.nextInt();
  		Coin coin = new Coin();
  		String name = coin.getName(amount);
  		System.out.println(name);
//  		coin.getName(amount);
//  		System.out.println(coin.getName(amount));
 	}
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值