• 集合


     

    1、Collection框架中实现比较要实现什么接口

    comparable/comparator

     

    2、ArrayList和Vector的区别

    这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素ArrayList与Vector的区别,这主要包括两个方面

    同步性:Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的,ArrayList与HashMap是java2时才提供的,它们是线程不安全的。

    数据增长:ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,Vector增长原来的一倍,可以设置增长空间的大小。ArrayList增加原来的0.5倍,没有提供增长空间大小的方法。

     

    3、HashMap(数组+链表+红黑树)和Hashtable的区别,线程安全的hashmap

    历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现

    同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的,效率高。在一个线程访问集合的情况下使用HashMap,在多个线程访问同一个集合是使用Hashtable。

    值:HashMap的key 和value可以是null,Hashtable不行

    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解

    线程安全的hashmap:

    方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的.

    方法二:java.util.concurrent.ConcurrentHashMap

     

    4、没有有顺序的 Map 实现类, 如果有他们是怎么保证有序的。

    TreeMap和LinkedHashMap是有序的(TreeMap默认升序,LinkedHashMap则记录了插入顺序)

     

    5、List和 Map区别?

    一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

     

    6、List, Set, Map是否继承自Collection接口?

    List,Set是,Map不是

     

    7、说出ArrayList,Vector,LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差

    而LinkedList使用双向链表实现存储,所以查找数据慢插入数据快。LinkedList也是线程不安全的

     

    8、去掉一个Vector集合中重复的元素

    HashSet set = new HashSet(vector);

     

    9、Collection和 Collections的区别

    Collection是集合类的上级接口,继承与他的接口主要有Set和List.

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

     

    10、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

    Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。

     

    11、两个对象值相同(x.equals(y) ==true),但却可有不同的hash code,这句话对不对?

    对。如果对象要保存在HashSet或HashMap中,它们的equals相等,那么,它们的hashcode值就必须相等。

    如果不是要保存在HashSet或HashMap,则与hashcode没有什么关系了,这时候hashcode不等是可以的,例如arrayList存储的对象就不用实现hashcode,当然,我们没有理由不实现,通常都会去实现的。

     

    12、java两个list中保存bean对象,找出其中某一属性不同的元素

    public class person {
        private int id;
        private String name;
    public person(int id, String name) { super(); this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { // TODO Auto-generated method stub return "id:"+id+","+"name:"+name+" "; } @Override public boolean equals(Object obj) { if(name.equals(((person)obj).getName())) return true;//这里以name为判定标准。 else { return false; } } @Override public int hashCode() { return name.hashCode(); } } private static void getDifferentPart2(List<person> l1, List<person> l2) { for(person a : l1){ if(l2.contains(a)){ System.out.println("ok!!!"); } } }
  • 相关阅读:
    5 TensorFlow入门笔记之RNN实现手写数字识别
    用python简便地抓取刘昊然的写真(17行代码)
    MFC实现简单飞机大战(含游戏声音)
    4 TensorFlow入门之dropout解决overfitting问题
    3 TensorFlow入门之识别手写数字
    2 TensorFlow入门笔记之建造神经网络并将结果可视化
    1 TensorFlow入门笔记之基础架构
    用python的turtle画分形树
    win10下安装TensorFlow(CPU only)
    python中math常用函数
  • 原文地址:https://www.cnblogs.com/zhangjinru123/p/8595170.html
Copyright © 2020-2023  润新知