所有集合的列表 - 1

“嗨,阿米戈。”

“你好,里希。”

“艾莉告诉我,你想要更多的集合示例。我会给你几个。下面是集合和接口的列表:”

接口 类/实现 说明
List  ArrayList  List
 LinkedList  List
 Vector  Vector
 Stack  Stack
 Set    HashSet  Set
 TreeSet  Set
 SortedSet  Sorted set
Map  HashMap Map/dictionary
 TreeMap  Map/dictionary
 SortedMap  Sorted dictionary
 Hashtable  Hash-table

“嗯。非常多。四个列表、三个集和四个映射。”

“是的,它们都是列表、集和映射接口的不同实现。”

“这些实现之间有什么区别?”

“这正是我们今天要讨论的内容。别着急。”

“你还有其他问题吗?”

“我知道如何在屏幕上显示列表。那么如何显示集或映射呢?”

“列表的元素有固定的顺序,因此可以只使用索引来显示它们。而集和映射则没有特定顺序。实际上,在删除项目或添加新项目时,它们的元素顺序可以改变。”

“太神奇了。”

“因此发明了名为迭代器的特殊对象来处理集合元素。迭代器允许你浏览集合中的所有元素,即使它们只有名称而不是索引(映射),或者既没有名称也没有索引(集)。”

“下面是一些示例:”

显示集的元素
 public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("西班牙");
    set.add("的");
    set.add("雨");

     // 获取集的迭代器
     Iterator<String> iterator = set.iterator();

    while (iterator.hasNext())        // 检查是否存在另一个元素
    {
       // 获取当前元素并移至下一个
       String text = iterator.next();

        System.out.println(text);
    }
}
 
显示列表的元素
public static void main(String[] args)
{
    List<String> list = new ArrayList<String>();
    list.add("西班牙");
    list.add("的");
    list.add("雨");

    Iterator<String> iterator = list.iterator();// 获取列表的迭代器

    while (iterator.hasNext())      // 检查是否存在另一个元素   
    {
        // 获取当前元素并移至下一个
        String text = iterator.next();

        System.out.println(text);
    }
}
显示映射的元素
public static void main(String[] args)
{
    // 所有元素成对存储
    Map<String, String> map = new HashMap<String, String>();
    map.put("第一个", "西班牙");
    map.put("第二个", "的");
    map.put("第三个", "雨");

    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

   while (iterator.hasNext())
    {
        // 获取键-值对
        Map.Entry<String, String> pair = iterator.next();
        String key = pair.getKey();            // 键
        String value = pair.getValue();        // 值
        System.out.println(key + ":" + value);
    }
}

“哇。我想知道这些都是什么意思。”

“实际上非常简单。首先,我们从集合中获取一个特殊对象,即迭代器。迭代器只有两种方法。

1.next() 方法返回集合中的下一个元素。

2.hasNext() 方法检查是否仍存在 next() 未返回的元素。”

“好的。我现在觉得越来越清楚了。我试着把自己的理解向你复述一遍。”

“嗯...首先,我们需要对集合调用 iterator() 方法来获取这个神奇的迭代器对象。”

“然后,我们将逐一获取元素,直至没有剩余元素。我们通过调用 next() 获取集合中的下一个元素,并通过对迭代器调用 hasNext() 来检查集合中是否仍有元素。我说的对吗?”

“是的,大体正确。但是还没有说到点子上。”

“Java 有用于处理迭代器的简写符号。按照 whilefor 的模式,又添加了一个特殊声明:for each。也可以使用关键字 for 来表示。”

“for-each 语句只用于处理集合和容器。它隐式地使用迭代器,但我们只看到返回的元素。”

“我来向你展示处理迭代器的普通写法和简写形式:”

普通写法
public static void main(String[] args)
{
  Set<String> set = new HashSet<String>();
    set.add("西班牙");
    set.add("的");
    set.add("雨");

    Iterator<String> iterator = set.iterator();
  while (iterator.hasNext())
  {
    String text = iterator.next();
    System.out.println(text);
  }
}
简写形式
public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("西班牙");
    set.add("的");
    set.add("雨");

   for (String text : set)   
    {
        System.out.println(text);
    }
}


“请注意,在右侧没有出现用红色或绿色突出显示的单词。实际上,三行内容被一行取代:”

普通写法
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
简写形式

for (String text : set)


“看起来很棒。这更喜欢这种方式。”

“我们来看一下上述示例的简写形式:”

显示集的元素
public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("西班牙");
    set.add("的");
    set.add("雨");

    for (String text : set)   
    {
        System.out.println(text);
    }
}
显示列表的元素
public static void main(String[] args)
{
    List<String> list = new ArrayList<String>();
    list.add("西班牙");
    list.add("的");
    list.add("雨");

     for (String text : list)        
    {
        System.out.println(text);
    }
}
显示映射的元素
public static void main(String[] args)
{
    Map<String, String> map = new HashMap<String, String>(); 
    map.put("第一个", "西班牙");
    map.put("第二个", "的");
    map.put("第三个", "雨");

    for (Map.Entry<String, String> pair : map.entrySet())
    {
        String key = pair.getKey();                      // 键
        String value = pair.getValue();                  // 值
        System.out.println(key + ":" + value);
    }
}

“你讲的有道理!”

“很高兴你能喜欢。”