《Java并发编程实战》并发编程实践》哪本比较好
更新时间:2023-03-04 22:03
最满意答案
1) System.out.println(list); 2) [Hello,Java,Learn,World] 3)改第一句List list=new LinkedList(); 1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 4. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。 4)Vector list=new Vector(); 1. Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。 2. 不管是ArrayList还是Vector,在它们内部都是使用一个数组来保存数据的。开发过程中,在使用它们任何一个的时候,你都需要记住这一点。你在往一个ArrayList或者Vector里插入一个元素的时候,如果内部数组空间不够了,ArrayList或者Vector就要扩展它的大小。Vector在默认情况下是增长一倍的大小,而ArrayList增加50%的大小。
其他回答
javaapi中所用的集合类,都是实现了collection接口,他的一个类继承结构如下: collection<--list<--vector collection<--list<--arraylist collection<--list<--linkedlist collection<--set<--hashset collection<--set<--hashset<--linkedhashset collection<--set<--sortedset<--treeset vector:基于array的list,其实就是封装了array所不具备的一些功能方便我们使用,它不可能走入array的限制。性能也就不可能 超越array。所以,在可能的情况下,我们要多运用array。另外很重要的一点就是vector“sychronized”的,这个也是vector和 arraylist的唯一的区别。 arraylist:同vector一样是一个基于array上的链表,但是不同的是arraylist不是同步的。所以在性能上要比vector优越一些,但 是当运行到多线程环境中时,可需要自己在管理线程的同步问题。 linkedlist:linkedlist不同于前面两种list,它不是基于array的,所以不受array性能的限制。它每一个节点(node)都包含两方 面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextnode)。所以当对linkedlist做添加,删除动作的时候就不用像 基于array的list一样,必须进行大量的数据移动。只要更改nextnode的相关信息就可以实现了。这就是linkedlist的优势。 list总结: 1.所有的list中只能容纳单个不同类型的对象组成的表,而不是key-value键值对。例如:[tom,1,c]; 2.所有的list中可以有相同的元素,例如vector中可以有[tom,koo,too,koo]; 3.所有的list中可以有null元素,例如[tom,null,1]; 4.基于array的list(vector,arraylist)适合查询,而linkedlist(链表)适合添加,删除操作。 hashset:虽然set同list都实现了collection接口,但是他们的实现方式却大不一样。list基本上都是以array为基础。但是set则是 在hashmap的基础上来实现的,这个就是set和list的根本区别。hashset的存储方式是把hashmap中的key作为set的对应存储项。
import java.util.*; public class TestList { public static void main(String args[]) { List list = new ArrayList(); list.add("Hello"); list.add("World"); list.add(1, "Learn"); list.add(1, "Java"); printList(list); } public static void printList(List list) { for(Object item : list){ System.out.println((String)item); } } }Hello Java Learn World 3、ArrayList 换 为 LinkedList import java.util.*; public class TestList { public static void main(String args[]) { List list = new LinkedList(); list.add("Hello"); list.add("World"); list.add(1, "Learn"); list.add(1, "Java"); printList(list); } public static void printList(List list) { for(Object item : list){ System.out.println((String)item); } } }ArrayList和LinkedList都是属于List,List是接口,ArrayList和LinkedList是两个实现类,所以这两个类的功能是一样的。ArrayList是用数组实现的,适合随机访问比较多的情况。 LinkedList是用链表实现的,适合增加删除节点比较多的情况。 vector import java.util.*; public class TestList { public static void main(String args[]) { List list = new Vector(); list.add("Hello"); list.add("World"); list.add(1, "Learn"); list.add(1, "Java"); printList(list); } public static void printList(List list) { for(Object item : list){ System.out.println((String)item); } } }Vector也是List一个实现类。不过, Vector现在应该没人用了。Vector也是基于数组实现, 之前应该是用于多线程中的,因为它的很多方法都用了synchronized限制。所以在多线程中,它应该是安全的。 但是后来Jdk中有了专门用于多线程的List,如:CopyOnWriteArrayList或者阻塞队列等。Vector这个类在多线程的速度不好,而且名字也很蛋疼,所以就应该不用了。
相关问答
更多-
Java集合类题目[2022-07-23]
要写一个程序,首先要考虑的是,有几个实体,每个实体的属性是什么。 你这个有,学生,课程,成绩3个。 然后各个属性你都说了。然后先把这3个实体类写出来。 student 类, { Integer ID; //学号 String name; int age; ... list course; 课程集合 } Course 类 { Integer id; 课程号。 String name; list S_id; 学习,本课程的学生集合。 } 成绩 类 { integer id; int type; 成绩的类型,(0 ... -
java集合类[2022-03-26]
呵呵,这个是由于泛型导致的错误,Vector v = new Vector();在5.0以后都进行了重新的构造,变成了泛型类,也就是说你在使用的时候需要加上 Vectorv = new Vector (); 这样在以后addElement的时候就只能添加integer类型的数据了,不过程序不会出现错误,只会给你一个警告,关系不大,你可以在main前面加上去处警告的annotation,给你修改一下 @SuppressWarnings("unchecked") public ... -
java集合类问题[2023-12-14]
1) System.out.println(list); 2) [Hello,Java,Learn,World] 3)改第一句List list=new LinkedList(); 1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ... -
怎么才能了解JAVA集合类?集合类是什么?[2022-06-03]
数组是集合的一种,是集合的一个子集,你理解了数组就理解了集合. 理解集合类 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。 (1)集 集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。 对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。 集也有多 ... -
java中集合、集合类和集合框架是什么意思?[2022-10-12]
都是在讲集合,就全是和集合有关的。。。。。框架也就是某些类的全称。。。。 集合是说拥有集合属性的定义 集合类,是一些实现类。。。。。 -
JAVA 关于集合类有什么用?[2023-08-28]
你就需要每种动物定义一个类来描述。 当你定义完全部的动物后,你可能就会发现,其他每种动物都有名称,年龄.只是每种东西喜欢的食物不一样。 这个时候你就会进行提前,把所有动物的共性提取出来,放在一个类中 class BaseAnimal{ String name; int age; public void like() { //在这里一般会根据需要将,将实现比较有代表性的行为封装在Base中。 } } 然后你就可以定义Dog class Dog extends BaseAnimal{ public void l ... -
对于集合类的操作的java代码实现的方法[2023-05-18]
//我用集合框架的老大跟子类ArrayList给你写个例子 import java.util.*; public class CollectionDemo{ public static void main(String[] args){ Collection c = new ArrayList(); //增加 c.add("Java01"); c.add("Java02"); //删除0角标的值 c.remove(0); //排序 为了方便,我把集合框架转成了String[]数组 String[] arr ... -
java容器类和集合类是一个概念吗?[2022-08-22]
容器是指放东西的物品,在JAVA里面也是这样的,比如 list 是可以用来放对象的列表 你也可以自定义一些类来放其它对象,那么,你定义的这个类就是其它对象的容器。 集合是一组可变数量的数据项,集合的种类包括列表,集,多重集,树和图,通俗地讲就是这么一堆东西。 -
java框架集合类怎么学[2022-02-12]
先了解一下集合类的一个整体的架构 比如collection下面两个接口 list set list下面主要有三个实现ArrayList linkedList vector ,set下面主要有hashSet 而map则是另一个包下的 属于集合框架 map下面有HashMap实现 然后 通过不同的对比 了解他们的特点 使用的场合 (互相对比) ArrayList---vector(区别) arrayList 是异步 vector是同步 异步(一个人在对这个集合进行操作时 同时另外一个人 也可以对他进行操作)不安 ... -
JAVA的集合框架中有那些类,他们都有那些区别[2022-08-03]
区别详解,没法详解,数据结构就够研究几个月的,不过要是把目标放在会用上,就容易多了,也无需了解底层,看看API文档,知道什么方法是干什么的会用就行了。 集合类巨多无比,其实常用的也就这么几个,其他的都不用太看,你就看看:ArrayList、LinkedList、HashMap、TreeMap、HashSet 就行了,我理解也有限,简单说一下这几个: Collection下面有List和Set,List有ArrayList、LinkedList,ArrayList底层以Object类型数组实现,特点是查找很快 ...