java List接口中常用类

Vector:线程安全,但速度慢,已被ArrayList替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。取出List集合中元素的方式:

get(int  index):通过脚标获取元素。

iterator():通过迭代方法获取迭代器对象。

ArrayList和Vector类都是基于数组实现的List类,Vector比较古老,被ArrayList取代了;

ArrayList是线程不安全的,而Vector是线程安全的,但是即使这样,也不推荐使用Vector,因为Collections有方法可以得到线程安全的ArrayList对象;

Collections类: static  List synchronizedList(List list) 返回指定列表支持的同步(线程安全的)列表。

Queue接口

继承Collection接口

模拟队列:先进先出(FIFO);

void add(Object e):将e插入到队列尾部;

Object element():获取队列头部的元素;

boolean offer(Object e):将e插入到队列的尾部,当使用有容量限制的队列时,此方法比add(Object e)方法更好。

Object peek():获取队列头部的元素。如果此双端队列为空,则返回 null。

Object poll():获取并删除队列头部的元素。如果此双端队列为空,则返回 null。

Object remove():获取并删除队列头部的元素。

Eg:练习:List的使用

设计Department  和 Employee 对象类(按照开发的样式没有写在一个文件里面)

//一个员工只可以有一个部门,所以按照普通的写法

//一个部门可以有许多员工,所以按照集合的写法;

//员工

package re538.Department;

public class Emp {

private Dept dept;//一个员工只可以有一个部门,所以按照普通的写法

private String name;

public Dept getDept() {

return dept;

}

public void setDept(Dept dept) {

this.dept = dept;

}

public Emp(String name) {

super();

this.name = name;

}

public String toString(){//覆写toString方法

return this.name+"";

}

}

//部门

package re538.Department;

import java.util.List;

public class Dept {

private String name;

private List emp;//一个部门可以有许多员工,所以按照集合的写法;部门里的属性,员工!

public Dept(String name) {

super();

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List getEmp() {

return emp;

}

public void setEmp(List emp) {

this.emp = emp;

}

private Dept parent;//一个部门只有一个直接主管部门,所以普通写法

private List children;//但是一个部门可以管理很多部门,充当很多部门的直接主管部门,所以使用集合

public Dept getParent() {

return parent;

}

public void setParent(Dept parent) {

this.parent = parent;

}

public List getChildren() {

return children;

}

public void setChildren(List children) {

this.children = children;

}

public String toString(){

return this.name.toString();

}

}

//测试类,主方法!

package re538.Department;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

public class TestDemo {

public static void main(String[] args) {

Emp e1 = new Emp("刘亦菲");

Emp e2 = new Emp("章泽天");

Emp e3 = new Emp("张月娟");

Emp e4 = new Emp("王二五");

Emp e5 = new Emp("刘昭");

List list = new ArrayList();//把员工丢尽集合去

list.add(e1);

list.add(e2);

list.add(e3);

list.add(e4);

list.add(e5);

for (Object object : list) {//把员工给遍历出来,使用的是直接的foreach(四种方法之一)

System.out.println("----->"+object);

}

System.out.println("-------------------");

Dept d = new Dept("部门");//定义出一个部门来接收员工

d.setEmp(list);//把员工这个集合丢到部门去。

Dept d1 = new Dept("itcast");

Dept cditcast = new Dept("成都传智播客");

Dept gzitcast = new Dept("广州传智播客");

Dept d4 = new Dept("CSDN");

System.out.println(d4);

List children = new ArrayList();

children.add(cditcast);

children.add(gzitcast);

d1.setChildren(children);//定义直接被主管部门(集合)

d1.setParent(d4);//定义直接主管部门

Iterator it = children.iterator();//运用到了迭代遍历,四种之一!

while(it.hasNext()){

System.out.println(it.next());

}

}

}

原文地址:https://www.cnblogs.com/fanweisheng/p/11136151.html

时间: 2024-10-09 21:07:28

java List接口中常用类的相关文章

java学习--java.util包中常用类

java.util包被称为java工具包,里面包含大部分的工具类 Random 随机数类 new Random() rd.nextInt() rd.nextInt(100) Scanner 扫描器类 Scanner sc = new Scanner(system.in); String str = sc.next(); String str1 = sc.nextLine(); int t = sc.nextInt(); float t = sc.nextFloat(); Date 日期类 Dat

java并发编程中常用的工具类 Executor

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-4-17  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ java.util.concurrent.Executor 使用 Execut

java学习--java.lang包中常用的类

java.lang包中的类是不需要import的 基本数据类型的包装类 包装类的使用相差不大,使用方法则以Integer为例 属性: MAX_VALUE 最大值 MIN_VALUE 最小值 构造方法: Integer t1 = new Integer(123); 将int构造成Integer Integer t2 = new Integer("1234"); 将数字字符串构造成Integer Integer t3 = 12345; 包装类与其对应的基本数据类型的区别是,包装类型所占用的

关于java同步包中ConcurrentLinkedQueue类的深入分析与理解

一,官方描述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检索元素.当许多线程共享访问同一个集合时,这个类是不二选择.这个队列不允许有null元素. 这个实现基于一种被描述为简单,快速,实用的非阻塞和阻塞公布队列算法而提供的一种有效的空闲等待算法. 注意,不像大多数集合,size方法的操作不是常量时间的,由于是异步队列,决定了元素的数量需要遍历真个元素集. 这个

Java.lang软件包中的类

Java.lang软件包是java语言的核心部分,它提供了java中的基础类.java.lang.Object,这是java.lang的根类,也是所有java类的超类.在构造java类的实例时,都先调用Object中的默认构造方法. 类java.lang.Class<T>也是一个非常重要的类.Class 类的实例用来表示正在运行的 Java 应用程序中的类和接口.Class对象在类加载时由JVM调用类加载器中的 defineClass 方法自动构造.java.lang.ClassLoader负

java在acm中常用基础技巧方法

java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input @Frosero import java.util.*; public class Main { static String a; static int c; static Scanner cin = new Scanner(System.in); public static void main(String[] args) { while(cin.hasNext()){ // while(scanf("%d&q

JAVA、android中常用的一些jar包的作用

正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来

java实现接口与继承类的区别

一个类只能继承一个类,但是可以实现多个接口. 接口里面的方法都是抽象方法,必须要重写所有的方法.接口抽象的方法都要被重写,而继承的类不必这样. 继承一般开发中用的会相比少一点,接口相比就应该会多一点.,接口主要是实现一种松耦合,便于以后的维护.升级,继承主要是提高代码的可重用性,很多东西都可以在父类中做好.子类可以直接用,用一句现在流行的话来说,继承的好处就跟拼爹是一样的. 不同的修饰符修饰(interface),(extends) 在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'

【java】开发中常用字符串方法

java字符串的功能可以说非常强大, 它的每一种方法也都很有用. java字符串中常用的有两种字符串类, 分别是String类和StringBuffer类. Sting类 String类的对象是不可变的. 创建String String() String(String str) String(char value[]) //用字符数组生成一个串对象 String(char value[], int offset, int count) //用字符数组value的offset位开始的count个字