Java List子接口

1.Collection接口

1.COllection接口 
  a.COllection是整个集合之中单值保存的最大父接口;
  public interface Collection<E> extends Iterable<E>                 
2.常用的方法
    add();向集合中保存数据;
    addAll();追加一个集合;
    clear();清空集合;
    contains(Object object);判断是否包含指定的内容,需要有equals()方法的支持;
    isEmpty():判断是否是空集合
    remove(Object object):删除对象;
    size()取得集合中保存的元素的个数;
    toArray()将集合变为对象数组保存
    iterator()为Iterator对象实例化
    其中add()和iterator()是用的机率是最高的;
    contains(object)和remove(obj)需要equals()方法的支持;       

2.List

1.存储一组有序(可以通过索引访问)的,可重复的数据,对Collection接口做了大量的扩充;
2.public interface List<E> extends Collection<E>{}
3.重要方法:
   E get(int index)取得索引编号内容
   E set(int index,E element)修改指定编号的内容
   ListIterator<E> listIterator()为ListIterator接口实例化
4.List本身是接口,操作List接口,需要对应的子类(实现类);
5.可以使用ArrayList,Vector,LinkedList子类实例化,其中ArrayList最为常用在实际开发中;

 2.1 ArrayList

class Book{
 private String name;
 private Double price;
 public String getName() {
	 return name;
 }
 public void setName(String name) {
	 this.name=name;
 }
 public Double getPrice() {
	 return price;
 }
 public void setPrice(Double price) {
	 this.price=price;
 }
public Book() {
	super();
}
public Book(String name, Double price) {
	super();
	this.name = name;
	this.price = price;
}
@Override
public String toString() {
	return "book [name=" + name + ", price=" + price + "]";
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Book other = (Book) obj;
	if (name == null) {
		if (other.name != null)
			return false;
	} else if (!name.equals(other.name))
		return false;
	if (price == null) {
		if (other.price != null)
			return false;
	} else if (!price.equals(other.price))
		return false;
	return true;
}

}
public class TestArrayList {
 public static void main(String[] args) {
	 List<String> list=new ArrayList<String>();
	 System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
	 list.add("hello");
	 list.add("hello");
	 list.add(1, "world");
	 System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
     /**
      * 输出
      * 1.Collection接口提供了size()获取集合的长度;
      * 2.List接口扩充了get(index)根据索引获取数据;
      */
      for (int i = 0; i < list.size(); i++) {
		String str=list.get(i);
		System.out.println(str);
	}
      //任何情况下,集合数据的删除和内容的查询都需要equals()的支持需要覆写equals();
	  List<Book> book=new ArrayList<Book>();
	  book.add(new Book("java基础", 100.0));
	  book.add(new Book("java Jvm",30d));
	  book.add(new Book("java基础", 100.0));
	  book.remove(new Book("java基础", 100.0));
	  for (int i = 0; i < book.size(); i++) {
		System.out.println(book.get(i));
		//没有重写equals()
		     /*  book [name=java基础, price=100.0]
				book [name=java Jvm, price=30.0]
				book [name=java基础, price=100.0]*/
	}
	  boolean contains = book.contains(new Book("java基础", 100.0));
	  System.out.println(contains);//false 在没有重写equsls()
}

}

2.2 Vector

 List<String> list=new ArrayList<String>();
	 System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());
	 list.add("hello");
	 list.add("hello");
	 list.add(1, "world");
	 System.out.println("长度为: "+list.size()+" 是否为空: "+list.isEmpty());

ArrayList和Vector的区别

ArrayList和vector的区别
1.时间:         ArrayList jdk1.2推出;
                      Vector    jdk1.0推出;
2.性能:        ArrayList 异步处理;
                      Vector    同步处理 ;
3.数据安全     ArrayList 线程不安全;
                      Vector    线程安全
4.输出            ArrayList      Iterator、ListIterator,forech
                      vector         Iterator、ListIterator,forech,Enumeration

2.3 LinkList

/**
	 * public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable{}
           特点:
       a.底层使用链表数据结构
       b.添加和删除速度快,查找修改慢;  
    
           
	*/
	List list=new LinkedList<String>();
	list.add("我是第一个元素");
	list.add("我是第二个元素");
	list.add("我是第三个元素");
	//使用for循环
	for (int i = 0; i < list.size(); i++) {
		System.out.println(list.get(i));
		
	}
	//使用foreach
	for (Object object : list) {
		System.out.println(object);
	}
    //使用迭代
	Iterator<String> iterator=list.iterator();
	while(iterator.hasNext()){
		String next = iterator.next();
		System.out.println(next);
	}
	

总结

总结:
  a.List中的数据保存顺序就是数据添加的顺序;
  b.List集合中可以保存重复的元素;
  c.List子接口比Collection接口扩充了一个get();
  d.List子类大部分使用ArrayList;

猜你喜欢

转载自blog.csdn.net/qq_29393273/article/details/85345397