06. maj 2003 - 12:25Der er
19 kommentarer og 1 løsning
Et par hurtige..
Et par hurtige Java-spm. fra en novice: - hvordan omsætter man fra numerisk til karakter og omvendt? - Hvordan lagrer man mest effektivt numeriske variable i en array-lignende struktur med samme funktionalitet som Vector-klassen (dvs. dynamisk udvidelse mulig). Så vidt jeg kan se, kan man ikke direkte lagre variabler af simpel type i et Vector-objekt
public class MyArrayList ArrayList { private ArrayList list; public MyArrayList() { list = new ArrayList(); } public put(String key, int v) { list.put(key, new Integer(v)); } public getInt(String key) { return ((Integer)list.get(key)).intValue(); } }
Der er ikke alle som kan lide den slags klasser, men de er meget udbredte.
public class MyHashMap { private HashMap map; public MyHashMap() { map = new HashMap(); } public put(String key, int v) { map.put(key, new Integer(v)); } public getInt(String key) { return ((Integer)map.get(key)).intValue(); } }
eller:
public class MyArrayList { private ArrayList list; public MyArrayList() { list = new ArrayList(); } public put(int v) { list.put(new Integer(v)); } public getInt(int ix) { return ((Integer)list.get(ix)).intValue(); } }
public class MyArrayList { private ArrayList list; public MyArrayList() { list = new ArrayList(); } public void add(int v) { list.add(new Integer(v)); } public void add(double v) { list.add(new Double(v)); } public void add(boolean v) { list.add(new Boolean(v)); } public void add(String v) { list.add(v); } public int getInt(int ix) { return ((Integer) list.get(ix)).intValue(); } public double getDouble(int ix) { return ((Double) list.get(ix)).doubleValue(); } public boolean getBoolean(int ix) { return ((Boolean) list.get(ix)).booleanValue(); } public String getString(int ix) { return ((String) list.get(ix)); } public int size() { return list.size(); } }
MyHashMap.java --------------
import java.util.HashMap;
public class MyHashMap { private HashMap map; public MyHashMap() { map = new HashMap(); } public void put(String key, int v) { map.put(key, new Integer(v)); } public void put(String key, double v) { map.put(key, new Double(v)); } public void put(String key, boolean v) { map.put(key, new Boolean(v)); } public void put(String key, String v) { map.put(key, v); } public int getInt(String key) { return ((Integer) map.get(key)).intValue(); } public double getDouble(String key) { return ((Double) map.get(key)).doubleValue(); } public boolean getBoolean(String key) { return ((Boolean) map.get(key)).booleanValue(); } public String getString(String key) { return ((String) map.get(key)); } }
MyTest.java -----------
public class MyTest { public static void main(String[] args) { MyArrayList al = new MyArrayList(); al.add(123); al.add(123.456); al.add(true); al.add("abc"); System.out.println(al.getInt(0)); System.out.println(al.getDouble(1)); System.out.println(al.getBoolean(2)); System.out.println(al.getString(3)); MyHashMap hm = new MyHashMap(); hm.put("k1", 123); hm.put("k2", 123.456); hm.put("k3", true); hm.put("k4", "abc"); System.out.println(hm.getInt("k1")); System.out.println(hm.getDouble("k2")); System.out.println(hm.getBoolean("k3")); System.out.println(hm.getString("k4")); } }
og nu er det testet !
:-)
Som sagt så kan den slags wrappere hjælpe meget til at gøre noget kode let-læselig, fordi man skjuler alle de obskure konverteringer mellem objekter og simple data typer.
Der er faktisk en del "very high level" sprog der har tilsvarende konstruktioner.
Ofte kendt som "for each".
Der er også visse "ikke helt så high level sprog" der har den som f.eks. DOS/WINDOWS FOR løkke.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.