首页 > 编程知识 正文

java编程思想,java中接口只允许单一继承

时间:2023-05-06 12:12:25 阅读:40681 作者:1844

从Java容器的示意图中可以看到,只有四种类型的容器:映射、列表、集和队列。 其中,Set表示无序、不可重复集合的List表示有序、重复的集合; Map表示有映射关系的集合,Java5添加了表示队列集合实现的Queue体系集合。

HashSet和TreeSet是Set的两个典型实现,到底如何选择HashSet和TreeSet呢? HashSet的性能总是优于TreeSet。 特别是添加元素、查询操作最为常见。 这是因为TreeSet需要额外的红黑树算法来保持集合元素的顺序。 只有在需要维护排序的Set时才需要使用TreeSet,否则必须使用HashSet。

这四个容器都实现了Collection接口,因此可以升级到Collection。 Collection ll=new Map (); 由此,可以活用多态性特性进行码复用。

面试时的一个常见问题是,ArrayList和Vector有什么区别? ArrayList表示线程不安全,并且如果一个或多个线程访问同一ArrayList集合,则程序必须手动确保该集合的同步但是,Vector集合是线程安全的,程序不需要保证该集合的同步性。 但是,Vector是一个旧集合,从JDK1.0开始就存在。 它有很多缺点,通常尽量减少在Vector中实现类。 那么,如何同时使用ArrayList和线程安全? 需要同步控制。

Collections类提供了多个同步XXX ) )方法。 此方法将指定的集合包装为线程同步的集合,以解决多线程同时访问集合时的线程安全问题。

作为Java常用集合框架的实现类的HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap和TreeMap在线程中都不安全如果多个线程访问它们,并且一个或多个线程尝试修改它们,则存在线程安全问题。 Collections提供了多种类方法,可以包装为线程同步的集合。

以下示例程序创建了四个线程安全集合对象。

公共类同步测试

{

publicstaticvoidmain (字符串[ ] args ) )。

{

//以下程序创建了4个线程安全集合对象

collection c=collections.synchronized collection (new ArrayList () );

list list=collections.synchronized list (new ArrayList ();

sets=collections.synchronized set (new hashset ) );

mapm=collections.synchronized map (新散列映射) );

}

}

上面的示例程序将新创建的集合对象直接传递给Collections的synchronizedXxx方法,以便可以直接获取List、Set和Map的线程安全实现版本。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。