📜  Java程序的输出 |第 55 集(Java集合框架)

📅  最后修改于: 2021-10-28 01:40:34             🧑  作者: Mango

先决条件: Java集合框架。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        ArrayList arr = new ArrayList();
        arr.add(11);
        arr.add(2);
        arr.add(3);
        arr.add(5);
        arr.add(7);
        arr.remove(new Integer(7));
        arr.remove(2);
        for (int i = 0; i < arr.size(); i++)
            System.out.print(arr.get(i) + " ");
    }
}

A.编译错误。
B. 11 3 5
C. 11 2 5

Answer: C.

说明: ArrayList.remove() 方法采用索引或 Integer 类对象。这里它获取索引并删除该索引处的元素。因此,当我们使用new Integer(7) 时,它会从 ArrayList 中删除值 7。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        Deque dq = new LinkedList();
        dq.offerFirst(1);
        dq.offerFirst(2);
        dq.offerFirst(3);
        dq.offerLast(4);
        Queue q = new LinkedList();
        Iterator it = dq.descendingIterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
    }
}

A. 1 2 3 4
B. 4 1 2 3
C. 4 3 2 1

Answer: B.

说明: Deque 是一个双端队列,可以从两端插入和删除数据。当我们使用descendingIterator() 时,我们实际上是按照存储数据的相反顺序获取输出。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        Set h1
            = new TreeSet(
                Collections.reverseOrder());
        h1.addAll(
            Arrays.asList(
                new Integer[] { 1, 2, 3,
                                3, 5, 6,
                                7, 1, 4 }));
        for (int h : h1)
            System.out.print(h + " ");
    }
}

A. 1 2 3 3 5 6 7 1 4
B. 3 2 1 7 6 4 5
C. 7 6 5 4 3 2 1
D. 1 2 3 4 5 6 7

Answer: C.

说明: Set 不存储重复值。 TreeSet 按排序顺序存储数据,即升序,但这里我们使用了 Collections.reverseOrder() 使其显式按降序存储数据。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        Set h1 = new LinkedHashSet();
        Stack s1 = new Stack();
        for (int i = 0; i < 6; i++)
            h1.add(i);
        for (int h : h1) {
            s1.push(h);
        }
        while (!s1.isEmpty()) {
            System.out.print(s1.pop() + " ");
        }
    }
}

A. 3 4 1 2 5 0
B. 5 4 3 2 1 0
C. 1 2 3 4 5 0
D. 3 1 2 5 0 4

Answer: B.

说明: LinkedHashSet 不存储任何重复值,而是按原始插入顺序存储数据。此外,堆栈是一种 LIFO 数据结构。因此,堆栈中最近插入的值被弹出。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        LinkedHashMap hm
            = new LinkedHashMap();
        hm.put("John", 1);
        hm.put("Ron", 2);
        hm.put("George", 3);
        hm.put("Ray", 4);
        for (Map.Entry e : hm.entrySet())
            System.out.println(
                e.getKey() + " "
                + e.getValue());
    }
}

一种。

Ray 4
   George 3
   John 1
   Ron 2

B.

John 1
   Ron 2
   George 3
   Ray 4

C。

Ray 4
   George 3
   Ron 2 
   John 1 
Answer: B.

说明: LinkedHashMap 按照插入顺序存储数据。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        HashMap hm
            = new HashMap();
        hm.put("Karan", 1);
        hm.put("Deepak", 2);
        hm.put("Aman", 3);
        hm.put("Ayan", 4);
        TreeMap hm1
            = new TreeMap();
        hm1.putAll(hm);
        for (Map.Entry
                 entry : hm1.entrySet())
            System.out.println(
                entry.getKey()
                + " " + entry.getValue());
    }
}

一种。

B.

C。

D.

Answer: D.

说明: TreeMap 按照键值的排序顺序存储数据。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        Stack s1 = new Stack();
        Queue q = new LinkedList();
        for (int i = 0; i < 5; i++)
            s1.push(i);
        while (s1.isEmpty())
            q.add(s1.pop());
        System.out.print(q.peek());
    }
}

A. 4
B. 0
C.编译错误
D.

Answer: D.

说明:由于队列中没有放置任何值,while 循环的条件为假。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        HashSet h1 = new HashSet();
        h1.addAll(
            Arrays.asList(
                new Integer[] { 1, 2, 2,
                                3, 6, 4,
                                4, 0, 7, 5 }));
        h1.remove(1);
        h1.remove(2);
        h1.remove(4);
        for (int h : h1)
            System.out.print(h + " ");
    }
}

A. 1 3 4 4 0 7 5
B. 2 3 6 4 0 7 5
C. 0 3 5 6 7
D. 5 6 3 2 0 7 4

Answer: C.

说明: HashSet 不包含任何重复值。所以 2 和 4 只存储一次。当 remove函数被调用时,它会删除作为参数传递给函数。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        TreeSet ts
            = new TreeSet();
        ts.add(101);
        ts.add(76);
        ts.add(89);
        ts.add(7);
        System.out.print(ts.first() + " ");
        ts.remove(7);
        System.out.print(ts.last() + " ");
        System.out.print(ts.first() + " ");
    }
}

A. 101 89 101
B. 7 76 101
C. 7 101 76

Answer: C.

说明: TreeSet 以 Sorted 顺序(升序)存储值。此外, TreeSet.first() 返回最小值, TreeSet.last() 返回集合中存在的最大值。

import java.util.*;
  
class Demo {
    public static void main(String[] args)
    {
        Deque dq
            = new LinkedList();
        Stack s1
            = new Stack();
        dq.addFirst(10);
        dq.addFirst(20);
        dq.addLast(30);
        dq.addFirst(40);
        while (!dq.isEmpty())
            s1.push(dq.poll());
        while (!s1.isEmpty())
            System.out.print(s1.pop() + " ");
    }
}

A. 30 10 20 40
B. 40 30 20 10
C.编译错误。
D. 40 20 10 30

Answer: C.

说明:由于 Deque 是一个接口,所以可以借助 LinkedList 类进行实例化。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程