JAVA面试题目

来源:互联网 发布:excel 数据分析 知乎 编辑:程序博客网 时间:2024/05/21 06:24

1、collection与collections的区别:

答:colection是接口,下面包含如下类(List,Set),其中List 包含(linkedList,arrayList,Vetcor),其中Vetcor下有stack

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
 Collection   
├List   
│├LinkedList   
│├ArrayList   
│└Vector   
│ └Stack   
└Set 
Map
Hashtable
├HashMap
└WeakHashMap
扩展

java.util包中 Set 和 List 的区别

对于Set 和 List都是 接口 Collection 的子接口 

A、Set 不允许重复,List允许重复 
B、Set 没有顺序,List有顺序 

另外:对于List当中,有没有重复元素的判断:是依据元素的 equals方法判断是否相等的。 
对于排序来说,是根据元素实现了Comparable接口compareTo()方法来排序的。 

2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

   Collections.sort(list);  


2、ArrayList与Vector的区别

Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。


3、ArrayList和LinkedList区别

对于处理一列数据项,Java提供了两个类ArrayList和LinkedList,ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别。 

从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能

而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

 如果在编程中,1,2两种情形交替出现,这时,你可以考虑使用List这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。



关于java的集合类,以及HashMap中Set的用法!
2007-08-07 16:17
关于java的集合类,以及HashMap中Set的用法!2005-10-22 14:47:43 Sat | 阅读(547)次
package com.tiantian;

import java.util.*;

public class JAVAContainer {

     public static void main(String[] args) throws Exception {
         //     ArrayList
         {
             ArrayList arraylist = new ArrayList();
             arraylist.add(0, "end");//指定索引加入值
             //     需注意的是,如果现有2个值,我加入索引为5的那么就会出现异常
             for (int i = 0; i < 2; i++) {
                 arraylist.add(i, String.valueOf(i));
             }
             System.out.println("ArrayList:");
             for (int i = 0; i < arraylist.size(); i++) {
                 System.out.print(arraylist.get(i) + ";");
             }
             arraylist.add("0");//直接加入值到ArrayList的最后
             arraylist.add("0");
             System.out.print(" ArrayList's lastIndexOf("0") is "
                     + arraylist.lastIndexOf("0"));
         }
         //     Arrays
         {
             String[] array = new String[] { "a", "b", "c" };
             List list = Arrays.asList(array);
             System.out.println(" Arrays:");
             for (int i = 0; i < list.size(); i++) {
                 System.out.print(list.get(i) + ";");
             }
             System.out.print(" Arrays's length is " + array.length);//打印数组的长度
         }
         //     Collections
         {
             String[] array = new String[] { "a", "b", "c" };
             List list = Arrays.asList(array);
             Collections.fill(list, "Fill");//用Fill填充全部元素
             System.out.println(" Collections:");
             for (int i = 0; i < list.size(); i++) {
                 System.out.print(list.get(i) + ";");
             }
             array = new String[] { "1", "2", "3" };
             List list2 = Arrays.asList(array);
             Collections.copy(list, list2);//拷贝list2的数据进list
             System.out.println(" " + list);
             Collections.swap(list, 2, 1);//调换索引为1和2的元素的位置
             System.out.println(list);
         }
         //     EventObject
         {
             String s = "hello";
             String s2 = s;
             EventObject eventobject = new EventObject(s);//一个准容器类型,确切的归类它不是容器
             System.out.println("EventObject:");
             System.out.println(eventobject.getSource());
             System.out.println(eventobject.equals(s2));
         }
         //     HashMap
         {
             HashMap hashmap = new HashMap();//一个速度最快的容器
             hashmap.put("0", "c");
             hashmap.put("1", "a");
             hashmap.put("2", "b");
             hashmap.put("3", "a");
             System.out.println("HashMap:");
             System.out.println(hashmap);//该容器有其内部的排序方式
             Set set = hashmap.keySet();//获取全部键
             Iterator iterator = set.iterator();
             while (iterator.hasNext()) {
                 System.out.print(hashmap.get(iterator.next()) + ";");
             }
         }
         //     HashSet
         {
             HashSet hashset = new HashSet();//一个绝对不能重复的类型
             hashset.add("c");
             hashset.add("b");
             hashset.add("a");
             hashset.add("a");
             hashset.add("b");
             System.out.println(" HashSet:");
             System.out.println(hashset);
             Iterator iterator = hashset.iterator();//取出元素
             while (iterator.hasNext()) {
                 System.out.print(iterator.next() + ";");
             }
         }
         //     Hashtable
         {
             Hashtable hashtable = new Hashtable();//一个完全可以由其他容器替换的老容器类型
             hashtable.put("0", "c");
             hashtable.put("1", "a");
             hashtable.put("3", "c");
             hashtable.put("2", "b");
             System.out.println(" Hashtable:");
             Enumeration enumeration = hashtable.elements();//获取元素,Enumeration已经不是主流,Iterator是它的下一代替代品
             while (enumeration.hasMoreElements()) {
                 System.out.print(enumeration.nextElement() + ";");
             }
         }
         //     IdentityHashMap
         {
             IdentityHashMap identityhashmap = new IdentityHashMap();
             identityhashmap.put("0", "c");
             identityhashmap.put("1", "a");
             identityhashmap.put("3", "b");
             identityhashmap.put("2", "a");
             System.out.println(" IdentityHashMap:");
             System.out.println(identityhashmap);
             System.out.println(identityhashmap.containsKey("3"));//是否包含这个键
             System.out.println(identityhashmap.containsValue("a"));//是否包含值
             Set set = identityhashmap.entrySet();//传为Set类型
             System.out.println(set);
             set = identityhashmap.keySet();//全部键
             System.out.println(set);
         }
         //     LinkedHashMap
         {
             LinkedHashMap linkedhashmap = new LinkedHashMap();
             linkedhashmap.put("0", "b");
             linkedhashmap.put("2", "a");
             linkedhashmap.put("1", "c");
             linkedhashmap.put("3", "b");
             System.out.println("LinkedHashMap:");
             System.out.println(linkedhashmap);
             System.out.println(linkedhashmap.containsKey("2"));//是否包含这个键
             System.out.println(linkedhashmap.containsValue("c"));//是否包含值
             Set set = linkedhashmap.keySet();
             Iterator iterator = set.iterator();
             while (iterator.hasNext()) {
                 System.out.print(linkedhashmap.get(iterator.next()) + ";");
             }
         }
         //     LinkedHashSet
         {
             LinkedHashSet linkedhashset = new LinkedHashSet();//它包含了几种Set的属性但却没有自己的特色
             linkedhashset.add("c");
             linkedhashset.add("a");
             linkedhashset.add("a");
             linkedhashset.add("b");
             System.out.println(" LinkedHashSet:");
             System.out.println(linkedhashset);
             System.out.println(linkedhashset.contains("a"));//是否包含对象
             Iterator iterator = linkedhashset.iterator();
             while (iterator.hasNext()) {
                 System.out.print(iterator.next() + ";");
             }
         }
         //     LinkedList
         {
             LinkedList linkedlist = new LinkedList();//自由使用是它的特色
             linkedlist.add("a");
             linkedlist.add(1, "c");
             linkedlist.addLast("b");
             linkedlist.addFirst("d");
             System.out.println(" LinkedList:");
             System.out.println(linkedlist);
             //     linkedlist.clear();//该方法清空容器
             //     linkedlist.remove(0);//删除索引为0的元素
             //     linkedlist.remove("d");//删除值为d的元素
             //     linkedlist.removeFirst();//删除第一个元素
             //     linkedlist.removeLast();//删除最后一个元素
             for (int i = 0; i < linkedlist.size(); i++) {
                 System.out.print(linkedlist.get(i) + ";");
             }
         }
         //     Stack
         {
             Stack stack = new Stack();//堆栈
             stack.add("b");
             stack.add(0, "c");
             stack.push("d");
             stack.add("e");
             stack.push("a");
             Enumeration enumeration = stack.elements();
             System.out.println(" Stack:");
             while (enumeration.hasMoreElements()) {
                 System.out.print(enumeration.nextElement() + ";");
             }
             //     后进先出
             System.out.println(" " + stack.peek());
             System.out.println(stack.pop());
             System.out.println(stack.contains("d") + ";" + stack.contains("a"));//是否包含该元素,有趣的事情发生了
             System.out.println(stack.search("c"));//非常有用的属性,检索,但是由后向前的排列
         }
         //     TreeMap
         {
             TreeMap treemap = new TreeMap();
             treemap.put("0", "d");
             treemap.put("2", "a");
             treemap.put("1", "b");
             treemap.put("3", "c");
             System.out.println(" TreeMap:");//可以对键排序
             System.out.println(treemap);
             System.out.println(treemap.firstKey());//返回第一个键
             Set set = treemap.keySet();
             Iterator iterator = set.iterator();
             while (iterator.hasNext()) {
                 System.out.print(treemap.get(iterator.next()) + ";");
             }
         }
         //     TreeSet
         {
             TreeSet treeset = new TreeSet();//自动排序内容
             treeset.add("b");
             treeset.add("a");
             treeset.add("c");
             treeset.add("d");
             System.out.println(" TreeSet:");
             System.out.println(treeset);
             System.out.println(treeset.first());//返回第一个元素
             Iterator iterator = treeset.iterator();
             while (iterator.hasNext()) {
                 System.out.print(iterator.next() + ";");
             }
         }
         //     Vector
         {
             Vector vector = new Vector();
             vector.add(0, "b");
             vector.add("a");
             vector.addElement("d");
             vector.add("c");
             System.out.println(" Vector:");
             System.out.println(vector);
             vector.set(2, "h");//替换掉指定索引的元素
             System.out.println(vector);
             Object[] str = vector.toArray();
             for (int i = 0; i < str.length; i++) {
                 System.out.print(str[i] + ";");
             }
             vector.setSize(2);//重新设置大小为2
             System.out.println(" " + vector);
         }
         //     WeakHashMap
         {
             WeakHashMap weakhashmap = new WeakHashMap();
             weakhashmap.put("1", "b");
             weakhashmap.put("2", "c");
             weakhashmap.put("0", "d");
             weakhashmap.put("3", "a");
             System.out.println(" WeakHashMap:");
             System.out.println(weakhashmap);
             System.out.println(weakhashmap.containsKey("3"));//是否包含键
             System.out.println(weakhashmap.containsValue("d"));//是否包含值
             Set set = weakhashmap.entrySet();
             Iterator iterator = set.iterator();
             while (iterator.hasNext()) {
                 System.out.print(iterator.next() + ";");
             }
             //     weakhashmap.remove("2");//删除该键对应的值
             //     weakhashmap.get("1");//获取指定键的值
         }
     }
}


原创粉丝点击