java中List三个子实现类的学习

List三个子实现类分别是:ArrayList, Vector,LinkList.

特点:
ArrayList:
底层数据结构式数组结构,查询块,增删慢
从内存角度考虑:线程不安全的,不同步的,执行效率高

多线程:synchronized :同步的意思 解决线程安全问题
sychronized(锁对象){ 同步代码 
共享数据;
}
解决线程安全问题,通过同步可以解决,但是效率低了...
Vector:
这是一个线程安全的类,
底层数据结构是数组:查询快,增删慢

线程安全的,同步,执行效率低!

                        LinkedList:
:底层数据结构式链表结构,查询慢,增删块

从内存角度考虑:线程不安全,不同步,执行效率高

ArrayList:

        ArrayList是List接口中常用的一个子实现类

举例:

public class ArrayListDemo1 {
public static void main(String[] args) {
	ArrayList arr=new ArrayList();
	arr.add("hello");
	arr.add("world");
	arr.add("retain");
	Iterator it =arr.iterator();
	while(it.hasNext()) {
		String s=(String)it.next();
		System.out.println(s);
		System.out.println("---------------------");
//		for循环遍历
		for(int i=0;i<arr.size();i++) {
			String s1=(String)arr.get(i);
			System.out.println(s1);
			
		}
	}
}
}

        ArrayList集合存储自定义对象并遍历

举例:

public class ArrayListDemo2 {
public static void main(String[] args) {
	ArrayList arr=new ArrayList();
	Student s1=new Student("马云",27);
	Student s2=new Student("马化腾",42);
	Student s3=new Student("林泽勋",40);
	Student s4=new Student("林更新",85);
	arr.add(s1);
	arr.add(s2);
	arr.add(s3);
	arr.add(s4);
	Iterator it =arr.iterator();
	while (it.hasNext()) {
		Student s=(Student) it.next();
		System.out.println(s);
		System.out.println("--------------");
		for(int i=0;i<arr.size();i++) {
			Student ss=(Student)arr.get(i);
			System.out.println(ss);
		}
	}
}
}

Vector: 底层是一种可增长对象数组,查询快,增删慢
 
线程安全,同步,执行效率低
 
  特有功能:
 
public void addElement(Object obj)------->add(Object obj)
  public Enumeration elements():返回此向量的枚举--->相当于:public Iterator iterator()
  boolean hasMoreElements()  --->boolean hasNext() ;
  Object nextElement()  --->Object next() ;
举例:

public class VectorDemo1 {
public static void main(String[] args) {
    Vector v=new Vector();
    v.addElement("hello");
    v.addElement("world");
    v.addElement("retain");
    Enumeration en=v.elements();
    while(en.hasMoreElements()) {
    	String s=(String)en.nextElement();
    	System.out.println(s);
    }
}
}

LinkedList:

   LinkedList集合的特点:
  底层是一种链表实现,查询慢,增删快
  线程不安全的,不同步,执行效率高
 
 特有功能:
  添加功能
  addFirst(Object e):将指定的元素插入到列表的开头
  addLast(object e):将指定的元素添加到列表末尾
  获取功能:
  getFirst():获取列表第一个元素
  getLast():获取列表末尾元素
 
  删除功能
  public Object removeFirst()移除并返回此列表的第一个元素。
  public Object removeLast()移除并返回此列表的末尾元素。
 举例:

 * @author 田伟
 *
 */
public class LinkedListDemo1 {
public static void main(String[] args) {
	LinkedList l=new LinkedList();
	l.add("a");
	l.add("b");
	l.add("c");
	l.add("d");
	System.out.println(l);
	l.addFirst("hello");
	l.addLast("world");
	System.out.println(l);
	System.out.println(l.getFirst());
	System.out.println(l.getLast());
	System.out.println("------------");
	System.out.println(l.removeLast());
	System.out.println(l.removeFirst());
	System.out.println(l);
	
}
}

注释:在开发中,一般情况下,如果不提示用那个集合,都默认为ArrayList.

ArrayList的一些应用

需求:给集合中添加重复的元素(字符串类型),将重复的元素从集合去除掉!
 思路:
  1)创建一个旧集合,添加重复元素
  2)创建一个新集合
  3)遍历旧集合中的元素获取到每一个元素
  在旧集合中判断新集合中是否包含旧集合中的元素
  包含,不搭理
  不包含,添加到新集合中
  4)遍历新集合

* @author 田伟
 *
 */
public class ArrayListTest1 {
public static void main(String[] args) {
	ArrayList<String> arr=new ArrayList<String>();
	arr.add("a");
	arr.add("b");
	arr.add("a");
	arr.add("c");
	arr.add("d");
	arr.add("b");
	ArrayList<String> arr1=new ArrayList<String>();
	Iterator it=arr.iterator();
	while(it.hasNext()) {
	String s=(String)it.next();
	if(!arr1.contains(s)) {
		arr1.add(s);	
	}
	}
	for(String s1:arr1) {
	System.out.println(s1);	
	}
  }
}
    需求:去重集合中重复的元素

    假设:现在的需求:不允许新建一个集合去完成,怎么办?

举例:

**去重集合中重复的元素
 * 假设:现在的需求:不允许新建一个集合去完成,怎么办? 
 * @author 田伟
 *
 */
public class ArrayListTest2 {
public static void main(String[] args) {
	ArrayList<String> arr=new ArrayList<String>();
	arr.add("c");
	arr.add("s");
	arr.add("s");
	arr.add("c");
	arr.add("d");	
	arr.add("c");
	arr.add("n");
	/**
	 * 引入选择排序,
	 * 用0索引对应的元素依次和后面索引对应的元素进行比较
	 * 	如果前面的元素和后面的元素重复了,把后面元的干掉
	 * 依次1索引....
	 */
	for(int i=0;i<arr.size()-1;i++) {
		for(int j=i+1;j<arr.size();j++) {
			if(arr.get(i).equals(arr.get(j))) {
				arr.remove(j);
			}
		}
	}
	
	for(String s:arr) {
		System.out.println(s);
	}
}
}

猜你喜欢

转载自blog.csdn.net/wt5264/article/details/80259745