CodeGym /课程 /Java 语法 /所有集合的列表

所有集合的列表

Java 语法
第 8 级 , 课程 2
可用
所有集合的列表 - 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);
    }
}

“你讲的有道理!”

“很高兴你能喜欢。”

评论 (18)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
ForestHo 级别 15,Washington,China
20 五月 2024
周一的学习效率比较低🙃🚁🛸
Anonymous #11443734 级别 22,Russia,Russian Federation
20 一月 2024
千里之行始于足下,没有什么完不成的
Anonymous #11443734 级别 22,Russia,Russian Federation
20 一月 2024
nice
Ocean 级别 22,China,Hong Kong
29 七月 2022
Great!
阿狼 级别 32,Zhengzhou,China
8 六月 2022
XDM,人麻了有点。其实我到现在都有点搞不懂for-each语句,但迭代器的普通版反而能看懂,就是一种遍历方式而已。创建方法也中规中矩。
阿狼 级别 32,Zhengzhou,China
8 六月 2022
我对for-each方法的理解就是: for(String x ; list),String代表变量类型,是什么就写什么。list是你的数组名称。然后x是随便写的,写什么都一样。反正都是为了遍历list数组。
Super Ego 级别 14,Wu Han,China
10 二月 2023
感觉其实类似python的for item in list的结构
HOHOZ 级别 11,Australia
27 十一月 2023
32级的大佬在初学的时候原来也会和我一样搞不懂这些呀
dawning77 级别 9,Central District,China
31 一月 2022
请问这里的“接口”是指的“抽象类”吗 用”接口“描述list set和map是否欠妥?
To be brave #10900452 级别 14,Пекин,China
7 一月 2022
https://www.runoob.com/java/java-hashmap.html
To be brave #10900452 级别 14,Пекин,China
7 一月 2022
建议参考 菜鸟教程,整体路线以视频学习为主,这个作为练习网站
illion 级别 9,China,China
9 十二月 2021
没有理解,看得我一脸懵逼
shoudlee 级别 9,Nanjing,China
8 十二月 2021
foreach循环中无法操作元素