为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕虎7371278 2022-09-07 16:32:26
在Python中,我使用列表来存储集合,而在Java中,有多个选择。如果java只支持集合,会有问题吗?
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

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();

   }

}


查看完整回答
反对 回复 2022-09-07
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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

Collection与数组不同。还有像s这样的集合,它们具有不同的属性。通常,如果要拥有动态可增长列表,请使用。SetArrayList


查看完整回答
反对 回复 2022-09-07
?
HUX布斯

TA贡献1876条经验 获得超6个赞

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

看看 ArrayList,它是数组的集合版本。

ArrayList 仅支持对象,不支持基元。如果要为每个值创建一个 ArrayList 的 ints,则必须将其自动装箱到 Integer 中,这在性能方面是一个很大的开销。

//img1.sycdn.imooc.com//631857490001521b06320137.jpg

如果您想要的只是一个简单的数据结构来存储一些东西,那么您就不需要在性能上受到打击。但是,如果您需要做一些额外的事情,例如动态调整大小的数组或集合,java可以通过为您提供集合来支持您。


查看完整回答
反对 回复 2022-09-07
  • 3 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信