A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于将int数组使用系统提供的API转成集合后,不可以进行的操作是(  )
a)增加集合中的元素
b)迭代集合
c)修改集合中的元素
d)获取集合中元素的个数

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

16 个回复

正序浏览
rick1991chen 发表于 2015-5-21 20:16
diaodiaodiao学习到了,虽然没看懂

里面的集合还没有看到,绞尽脑汁都看不懂
回复 使用道具 举报
diaodiaodiao学习到了,虽然没看懂
回复 使用道具 举报
果断是A啊
回复 使用道具 举报
A为整洁
回复 使用道具 举报
这道题我做错了,哎
回复 使用道具 举报
数组定长.   A
回复 使用道具 举报
sss18310878521 发表于 2015-5-21 16:10
答案是a,你说的集合应该是ArrayList,因为它的底层结构就是数组,既然是数组,那么它的长度就不能被修改, ...

其实ArrayList的底层本身就是数组,,可以参考源码,,,或看楼上回复
回复 使用道具 举报
王建伟 发表于 2015-5-21 15:19
list不是可以变长的吗?很迷惑啊。。。。

list只是一个接口,,能不能自动变长,取决于子类的实现,但Arrays.asList方法返回的对象不是java.util.ArrayList,是Arrays的内部类,可以参考一下我刚研究的:
教你如何一句代码将数组转为可变长度的集合
http://bbs.itheima.com/thread-198008-1-1.html
(出处: 黑马程序员IT技术论坛)
回复 使用道具 举报
zdh 中级黑马 2015-5-21 16:12:18
9#
a嘛~~!!!!
回复 使用道具 举报
答案是a,你说的集合应该是ArrayList,因为它的底层结构就是数组,既然是数组,那么它的长度就不能被修改,(这跟我们平常所说的集合长度可以自由增长不一样,因为这个是由数组转过来的)
回复 使用道具 举报
明显是A选项
回复 使用道具 举报
as604049322 发表于 2015-5-21 15:13
Arrays.asList()返回的是Arrays的内部类,这个类没有复写add和remove方法,而父类AbstractList的增删操作直 ...

list不是可以变长的吗?很迷惑啊。。。。
回复 使用道具 举报
Arrays.asList()返回的是Arrays的内部类,这个类没有复写add和remove方法,而父类AbstractList的增删操作直接抛出UnsupportedOperationException()异常。
  1. public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
  2.    
  3.     protected AbstractList() {
  4.     }

  5.     public boolean add(E e) {
  6.         add(size(), e);
  7.         return true;
  8.     }

  9.     public void add(int index, E element) {
  10.         throw new UnsupportedOperationException();
  11.     }

  12.     public E remove(int index) {
  13.         throw new UnsupportedOperationException();
  14.     }
  15. }
复制代码
回复 使用道具 举报

  1. public static <T> List<T> asList(T... a) {
  2.         return new ArrayList<>(a);
  3.     }

  4.     /**
  5.      * @serial include
  6.      */
  7.     private static class ArrayList<E> extends AbstractList<E>
  8.         implements RandomAccess, java.io.Serializable
  9.     {
  10.         private static final long serialVersionUID = -2764017481108945198L;
  11.         private final E[] a;

  12.         ArrayList(E[] array) {
  13.             a = Objects.requireNonNull(array);
  14.         }

  15.         @Override
  16.         public int size() {
  17.             return a.length;
  18.         }

  19.         @Override
  20.         public Object[] toArray() {
  21.             return a.clone();
  22.         }

  23.         @Override
  24.         @SuppressWarnings("unchecked")
  25.         public <T> T[] toArray(T[] a) {
  26.             int size = size();
  27.             if (a.length < size)
  28.                 return Arrays.copyOf(this.a, size,
  29.                                      (Class<? extends T[]>) a.getClass());
  30.             System.arraycopy(this.a, 0, a, 0, size);
  31.             if (a.length > size)
  32.                 a[size] = null;
  33.             return a;
  34.         }

  35.         @Override
  36.         public E get(int index) {
  37.             return a[index];
  38.         }

  39.         @Override
  40.         public E set(int index, E element) {
  41.             E oldValue = a[index];
  42.             a[index] = element;
  43.             return oldValue;
  44.         }

  45.         @Override
  46.         public int indexOf(Object o) {
  47.             E[] a = this.a;
  48.             if (o == null) {
  49.                 for (int i = 0; i < a.length; i++)
  50.                     if (a[i] == null)
  51.                         return i;
  52.             } else {
  53.                 for (int i = 0; i < a.length; i++)
  54.                     if (o.equals(a[i]))
  55.                         return i;
  56.             }
  57.             return -1;
  58.         }

  59.         @Override
  60.         public boolean contains(Object o) {
  61.             return indexOf(o) != -1;
  62.         }

  63.         @Override
  64.         public Spliterator<E> spliterator() {
  65.             return Spliterators.spliterator(a, Spliterator.ORDERED);
  66.         }

  67.         @Override
  68.         public void forEach(Consumer<? super E> action) {
  69.             Objects.requireNonNull(action);
  70.             for (E e : a) {
  71.                 action.accept(e);
  72.             }
  73.         }

  74.         @Override
  75.         public void replaceAll(UnaryOperator<E> operator) {
  76.             Objects.requireNonNull(operator);
  77.             E[] a = this.a;
  78.             for (int i = 0; i < a.length; i++) {
  79.                 a[i] = operator.apply(a[i]);
  80.             }
  81.         }

  82.         @Override
  83.         public void sort(Comparator<? super E> c) {
  84.             Arrays.sort(a, c);
  85.         }
  86.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 牛逼

查看全部评分

回复 使用道具 举报
将数组变成集合,不可以使用集合的增删方法;
因为数组的长度是固定的;

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
A                                             
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马