1.Foreach与迭代器:foreach语法可以用于任何Collection对象。
public static void main(String[] args) { Collection<String> c = new LinkedList<>(); c.add("春天"); c.add("夏天"); c.add("秋天"); c.add("冬天"); for (String s : c) { System.out.println(s); } }
Java SE5引入了新的Iterator的接口,该接口可以被foreach用来在序列中移动。
public static void main(String[] args) { for (String str : new Test()) { System.out.print(str + " "); } } public static class Test implements Iterable<String> { String[] s = ("Try to make money" + "Live Your Life.").split(" "); @Override public Iterator<String> iterator() { return new Iterator<String>() { private int index = 0; @Override public boolean hasNext() { return index < s.length; } @Override public String next() { return s[index++]; } }; } }
2.Java提供了大量持有对象的方式:①数组将数字与对象联系起来,保存了类型明确的对象,查询对象是不需要对结果做类型转换。数组一旦创建,就不能改变。②Collection保存单一的元素,Map保存的是键值对。Java泛型指定容器中存放的对象类型,从而就不需要类型转换。③ArrayList:随机访问快,插入删除慢。LinkedList:插入修改方便,随机访问慢 。④Set不保存重复的元素。HashSet查询速度快。TreeSet中的元素是排序好的。⑤Map把键对象和值对象映射的集合中。快速访问使用HashMap。TreeMap的“键”始终处于排序状态。