Java-List类

List类

List集合的子实现类的特点:

ArrayList:

底层数据结构是数组的形式,满足数组结构的特点:查询快,增删慢.

从线程安全问题来看:线程不安全的,不同步,执行效率高.

由于ArrayList是List集合的自实现类,它元素可以重复,并且存储和取出一致.

Vector:

底层数据结构是数组的形式,查询快,增删慢.

从线程角度看:线程安全的类,同步,执行效率低.

特有功能:

public void addElement(E obj)------->相当于:add(Object e)

public Enumeration<E> elements()----->相当于:Iterator iterator() ;

Enumeration<E>接口:向量的组件枚举有两个方法

boolean hasMoreElements():------>相当于:hasNext()

Object nextElement():----------->相当于:next();

public class VectorDemo {
	public static void main(String[] args) {
		Vector v=new Vector();
		v.addElement("I");
		v.addElement("Love");
		v.addElement("立华奏");
		//遍历
		Enumeration en=v.elements();
		while(en.hasMoreElements()){
			String s=(String)en.nextElement();
			System.out.println(s);
		}
	}
}

LinkedList:

底层数据结构是链接列表,特点:查询慢,增删快.

从线程角度看:线程不安全的一个类,不同步,执行效率高.

特有功能:

添加功能:

public void addFirst(E e)将指定元素插入此列表的开头。

public void addLast(E e)将指定元素添加到此列表的结尾。

获取功能:

public Object getFirst()返回此列表的第一个元素

public Object getLast()返回此列表的最后一个元素。

删除功能:

public Object removeFirst()移除并返回此列表的第一个元素。

public Object removeLast()移除并返回此列表的最后一个元素。

import java.util.LinkedList;

public class LinkedListDemo {
	public static void main(String[] args) {
		LinkedList list=new LinkedList();
		//将指定元素插入此列表的开头
		list.addFirst("I");
		list.addFirst("Love");
		list.addFirst("立华奏");
		System.out.println(list);
		System.out.println("---------");
		//获取功能
		System.out.println(list.getFirst());
		System.out.println(list.getLast());
		System.out.println("---------");
		//删除功能
		list.removeFirst();
		list.removeLast();
		System.out.println(list);
	}
}

结果为:

[立华奏, Love, I]
---------
立华奏
I
---------
[Love]

LinkedList模拟一个栈结构的特点.

表达的意思:自定义栈集合类,然后使用LinkedList的一些特有功能模拟栈结构特点.LinkedList集合的特有功能:addFirst(Object e) 栈结构的特点:先进后出.

如果实现多线程程序,一般要是安全的类:StringBuffer,Vector<E>,hashtable<K,V>.

如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList.如果需求中要考虑线程安全,那么使用Vector集合!

笔试过程中,一些需求用到集合:就是用ArrayList.

泛型:把数据类型的明确工作提供提前到了创建对象或者是调用方法的时期明确的一种特殊类型.参数化类型,可以像参数一样进行传递

格式:

<引用类型>:泛型只能放引用类型.

泛型好处:

1)将运行时期异常提前到了编译时期

2)解决了黄色警告线问题

3)获取数据的时候,不用强制类型转换了

泛型的高级:通配符

<?> :可以是任意类型,包括Object类型以及任意的Java类

<? extends E>:向下限定,E类型以及E类型的子类

<? super E>:向上限定,E类型以及E类型的父类

相关代码:

import java.util.ArrayList;
import java.util.Collection;

public class GenericDemo {
	public static void main(String[] args) {
		//前后类型保持一样
		Collection<Object> c=new ArrayList<Object>() ;
		//<?>:可以是任意类型,包括Object类型以及任意的Java类
		Collection<?> c1=new ArrayList<Object>();
		Collection<?> c2=new ArrayList<Animal>();
		Collection<?> c3=new ArrayList<cat>();
		//<? extends E>:向下限定,E类型以及E类型的子类
		Collection<? extends Object> c4=new ArrayList<Object>();
		Collection<? extends Animal> c5=new ArrayList<Animal>();
		Collection<? extends Animal> c6=new ArrayList<cat>();
		//<? super E>:向上限定,E类型以及E类型的父类
		Collection<? super Object> c7=new ArrayList<Object>();
		Collection<? super Animal> c8=new ArrayList<Object>();
	}
}
class Animal{
	
}
class cat extends Animal{
	
}
增强for循环:

书写格式:

  for(集合或者数组中的数据类型 变量名:集合或者数组的对象名){

输出变量名;

}

增强for循环的弊端:

遍历数组或者集合的时候,数组对象或者集合对象不能为null

如果对象为空,一般加上非空判断

增强for循环的出现就是为了替代迭代器遍历集合的,以后开发中就是用增强for遍历元素.

相关代码:

import java.util.ArrayList;


public class forDemo {
	
	public static void main(String[] args) {
		
		//定义一个数组,静态初始化
		int[] arr = {11,22,33,44,55} ;
		
		//普通for循环的遍历
		for(int x = 0 ; x < arr.length ; x ++){
			System.out.println(arr[x]);
		}
		
		System.out.println("-------------------");
		
		//使用增强for遍历
		for(int i :arr){
			System.out.println(i);
		}
		
		System.out.println("-------------------");
		
		//定义一个字符串数组,并遍历
		String[] strArray = {"hello","world","java"};
		//直接使用增强for循环
		for(String s : strArray){
			System.out.println(s);
		}
		System.out.println("-------------------");
		//创建ArrayList集合对象,添加并遍历元素
		ArrayList<String> array = new ArrayList<String>() ;
		//添加元素
		array.add("hello") ;
		array.add("world") ;
		array.add("java") ;
	
		//使用增强for遍历该集合
		for(String s :array){
			//获取到每一个元素
			//java.util.ConcurrentModificationException
			判断当前集合中是否有"world",如果有就添加元素
			if("world".equals(s)){
				array.add("javaee") ;
			}
		}
		
		System.out.println("-------------------");
		
		/*	array = null ;
		//java.lang.NullPointerException:空指针异常
		if(array!=null){
			//增强for循环
			for(String s:array){
				System.out.println(s);
			}
		}*/
	}
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值