java进阶--week3-3.2&&3.4--对象数组&&哈希表

来源:互联网 发布:关闭miui优化有影响吗 编辑:程序博客网 时间:2024/06/05 20:07


------------------------------------------对象数组------------------------------------------------

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>();//用来存放String的ArrayList
    
public void add(String s){//添加字符串
       notes.add(s);
    }
public void add(String s,int location ){//把String放在location的前面
notes.add(location,s );//注意两个add的不同,类似C的字符串处理函数
}
    public int getSize(){//字符串大小
    return notes.size();
    }
    public String getString(int index){//根据编号返回字符串,注意String的S要大写,不同int
    return notes.get(index);//get方法在ArrayList中
    }
    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++ ){//这段for循环可用ArrayList类库中的toArray代替
//      a[i] =   notes.get(i);
//      }
//      return   a;
  //  }
    
    public String[] list(){
    int[]ia = new int[10];
    String[] a = new String[notes.size()];
    notes.toArray(a);
    return a;
    }
    
public static void main(String[] args) {
         Value[] a = new Value[10];
         for(int i=0; i<a.length; i++){
        a[i] = new Value();
//         这句是什么意思??--新建一个Value类的对象,存到数组的每一个元素中,
//         在创建后,基本数据类型数组可以直接对数组元素赋值、引用等操作;
//         而自定义对象数组,需要对数组中的每个对象元素独立进行创建,然后才可以对其赋值、引用等操作,
//         如果没有单独对每个对象元素创建,会导致空指针异常




        a[i].set(i);//然后设置为i
         }
         for( Value v:a ){
        System.out.println(v.get());
             v.set(0);
         }
         for( Value v:a ){
        System.out.println(v.get());
         }
//      NoteBook nb = new NoteBook();
//      nb.add("frist");
//      nb.add("second");
//      nb.add("thrid",0);
//      System.out.println(nb.getString(1));
//  System.out.println(nb.getString(0));
//  nb.removeNote(1);
//  String[] a = nb.list();//获得字符数组
//  for(String s : a){//上下两个s对应
//  System.out.println(s);
//  }
//  
}


}



-----------------------哈希表-----------------------

功能:输入数字,输出代表的钱币的面值

package coins;
import java.util.HashMap;
import java.util.Scanner;
public class Coins {
    private HashMap<Integer,String> coinNames = new  HashMap<Integer,String>();
    public Coins(){
    coinNames.put(1,"penny");
    coinNames.put(10,"dime");
    coinNames.put(25,"quarter");
    coinNames.put(50,"half-dollar");
    coinNames.put(50,"五毛" );//重复放进一个键,则覆盖(唯一对应)
    for(Integer x : coinNames.keySet()){
    String s = coinNames.get(x);//注意不同一般的for-each,hash表有key和value,x是key,s是value
    System.out.println(s);
    }
    }
    public String getName(int amount){
    if( coinNames.containsKey(amount) )//Hash类库中返回boolean值的方法
        return coinNames.get(amount);
        else
        return "NOT FOUND";

    }
public static void main(String[] args) {
         Scanner in = new Scanner(System.in);
         int amount = in.nextInt();
         Coins coin = new Coins();
         String name = coin.getName(amount);
         System.out.println(name);
        


}
}

1 0