**
对象容器
**
- 顺序容器
- 对象数组
- 集合容器(Set)
- Hash表
## 3.1 顺序容器
一般存放数据可以创建一个数组,数组是一种容器,因为数组的局限性,一旦创建无法改变其大小,我们可以使用顺序容器来解决。
引入一种顺序容器ArrayList:
package text;
import java.util.ArrayList;
public class NoteBook {
private ArrayList<String> notes = new ArrayList<String>();
//private int size = 0;
public void add(String s) {
notes.add(s);
//size++;
}
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); //与上面的for循环功能相同
return a;
}
public static void main(String[] args) {
String[] a = new String[2];
a[0] = "first";
a[1] = "second";
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(10));
System.out.println(nb.getNote(1));
nb.removeNote(1);
String[] arr = nb.list();
for (String str : arr) { //对数组名为arr的每一个元素str
System.out.println(str);
}
}
}
3.2 对象数组
对象中的每个元素都是对象的管理者而非对象本身。
当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。
因此,仅仅创建数组并没有创建其中的每一个对象。
集合容器(SET)
SET可以理解为数学中的集合。
所有的元素都具有唯一的值,元素在其中没有顺序。
3.3 Hash表
也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
在HashMap的双列集合中, 有K, V两个值, K是唯一的, 而V是可以重复的。多次存放value值,只会保存一个。
package date;
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");
coinnames.put(50, "*");
System.out.println(coinnames.keySet().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);
}
}
早睡早起我最棒
发布了3 篇原创文章 · 获赞 1 · 访问量 19
私信
关注