为什么Java同时支持数组和集合?

时间:2019-03-27 06:08:18

标签: java arrays collections

在Python中,我使用列表来存储集合,而在Java中,则有多种选择。 如果Java仅支持Collections,会有问题吗?

3 个答案:

答案 0 :(得分:0)

数组是固定大小的数据类型,JVM支持这些数组,并提供诸如随机访问之类的功能。

Collection与数组不同。也有Set之类的集合,它们具有不同的属性。通常,如果您想拥有一个动态的可增长列表,请使用ArrayList

答案 1 :(得分:0)

java中的数组和集合有很多区别,其中一些是:

  1. 根据我们的要求,集合可以自然增长。我们可以增加或减少大小。数组的大小是固定的,一旦我们创建了数组,就无法根据需求增加或减少。

  2. 关于内存:建议使用集合,而在性能方面:建议使用数组。

  3. 数组只能容纳齐次元素,而集合可以同时容纳齐次元素和异构元素。

  4. 数组没有现成的方法,但是集合具有现成的数据结构和方法。

  5. 数组既可以容纳原语和包装对象,但集合只能容纳对象。

下面是Java中的一些集合集:

import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;

public class CollectionExamples {
   public static void main(String[] args) {

      List LinkedList = new LinkedList();
      LinkedList.add("Linked List Position 1");
      LinkedList.add("Linked List Position 2");
      LinkedList.add("Linked List Position 3");
      LinkedList.add("Linked List Position 4");
      displayAll(LinkedList);

      List arrayList = new ArrayList();
      arrayList.add("Array List Position 1");
      arrayList.add("Array List Position 2");
      arrayList.add("Array List Position 3");
      arrayList.add("Array List Position 4");
      displayAll(arrayList);

      Set hashSet = new HashSet();
      hashSet.add("Hashset Position 1");
      hashSet.add("Hashset Position 2");
      hashSet.add("Hashset Position 3");
      hashSet.add("Hashset Position 4");
      displayAll(hashSet);

      SortedSet treeSet = new TreeSet();
      treeSet.add("TreeSet Position 1");
      treeSet.add("TreeSet Position 2");
      treeSet.add("TreeSet Position 3");
      treeSet.add("TreeSet Position 4");
      displayAll(treeSet);

      LinkedHashSet linkedHashSet = new LinkedHashSet();
      linkedHashSet.add("linkedHashSet Position 1");
      linkedHashSet.add("linkedHashSet Position 2");
      linkedHashSet.add("linkedHashSet Position 3");
      linkedHashSet.add("linkedHashSet Position 4");
      displayAll(linkedHashSet);

      Map hashMap = new HashMap();
      hashMap.put("hashMapKey1", "hashMapValue1");
      hashMap.put("hashMapKey2", "hashMapValue2");
      hashMap.put("hashMapKey3", "hashMapValue3");
      hashMap.put("hashMapKey4", "hashMapValue4");
      displayAll(hashMap.keySet());
      displayAll(hashMap.values());

   }
   static void displayAll(Collection col) {
      Iterator itr = col.iterator();
      while (itr.hasNext()) {
         String str = (String) itr.next();
         System.out.println(str);
      }
      System.out.println();
   }
}

答案 2 :(得分:0)

除了一个例外,集合提供了数组所做的所有事情,但更多。 性能

看看ArrayList,它是数组的Collection版本。

ArrayList仅支持对象,不支持原语。如果您想为每个值创建一个int的ArrayList,则必须将其自动装箱到Integer中,这会显着提高性能。

enter image description here

如果您想要的只是一个简单的数据结构来存储一些东西,则无需在性能上受到影响。但是,如果您需要做一些额外的事情,例如动态调整大小的数组或Set,java会通过为您提供Collections来支持您