重拾JAVA基础17——List,迭代器使用

package day15;

import java.util.ArrayList;
import java.util.List;

/*
 * ------|Collection
 * -----------|List		如果实现了List 接口的集合类 有序 可重复
 * -----------|Set		如果实现了Set 接口的集合类,无序 不可重复
 * 有序:不是指自然序列,而是指按照添加顺序保持一致。
 * 
 * List 接口中的特有方法都有操作索引值的方法,只有List接口集合类下的接口有索引值,其他没有。
 * 
 * 
 */

public class Demo2 {
	
	public static void main(String[] args) {
		
		List list = new ArrayList();
		
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("1");
		System.out.println(list);
		
		List list2 = new ArrayList();
		list2.add("a");
		list2.add("b");
		list.add(1, list2);
		System.out.println(list);
		
		list.get(3);
		System.out.println(list.get(1));
		
	/*	//遍历集合元素
		for(int i = 0 ; i < list.size(); i++){
			System.out.println(list.get(i));
		}*/
	
		System.out.println(	list.lastIndexOf(list2));
		
		List subList = list.subList(0, 3);
		
		System.out.println(subList);
		
		list.set(1, "asdas");
		System.out.println(list);
		
		
	
	}
}

package day15;

import java.util.ArrayList;
import java.util.List;
/*
 * listIterator
 * List中的迭代方法。
 * 具备Iterator 中的所有方法。
 * 
 * 添加 :
 * 		hasPrevious()
 * 		previous() 当前指针先向上移动一个单位,然后取出当前指针指向的元素
 * 		next() 		先取出当前指针指向的元素,然后指针向下移动一个单位。
 * ----------------------------
 * 		add(E e)
 * 		set(E e)
 * 
 */
import java.util.ListIterator;

public class Demo3 {

	public static void main(String[] args) {

		List list = new ArrayList();
		ListIterator lt = list.listIterator();
		list.add("1");
		list.add("2");
		list.add("3");
		while(lt.hasNext()){
			lt.next();
		}
		while(lt.hasPrevious()){
			System.out.println(" - " +lt.previous());
		}
		
		
	}

}

package day15;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;


/*
 * 迭代器在遍历元素的过程中,不允许使用集合对象改变集合中的元素个数,
 * 如果需要添加或删除只能使用迭代器中的方法进行操作。
 * 如果使用了集合对象改变集合中的元素个数,那么就会出现并发异常。
 * 
 * 迭代器迭代的过程:从创建到结束时间段。
 * 
 */

public class Demo4 {

	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("1");
		list.add("2");
		list.add("3");
	/*	//get遍历
		for(int i = 0 ; i < list.size(); i ++){
			System.out.println("get---"+list.get(i));
		}
		
		ListIterator it =  list.listIterator();
		//正序遍历
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//reverse
		while(it.hasPrevious()){
			System.out.println(it.previous());
		}
		*/
		
	}

}

package day15;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
 * 集合的体系:
 * ------------|Collection  单列集合的根接口
 * ----------------| List  如果实现了List 接口的集合类,有序,可重复
 * --------------------|ArrayList		顺序表的特点	增删慢,查询快
 * --------------------|LinkdeList		链表的特点	增删快,查询慢
 * --------------------|Vector(了解即可)
 * ----------------| Set   如果实现了Set 接口的集合类,无序,不可重复
 * 
 * ArrayList 特有的方法
 * 	ensureCapacity(int minCapacity)
 *  trimToSize()
 *  
 *  ArrayList 实现原理与特点
 *  
 *  
 *  
 *  
 *  笔试题目:使用ArrayList无参的构造函数创建一个对象时,默认容量是多少?如果长度不够用时,如何自动增长?
 *  	ArrayList底层是维护了一个Object数组实现的,使用无参构造函数时,Object数字默认容量是10,自动增长0.5倍
 * 
 * 
 */
class Book {
	int id ;
	String name ;
	public Book(int id , String name ){
		this.id = id ;
		this.name = name;
	}
//	@Override
//	public boolean equals(Object obj){
//		Book book = (Book)obj;
//		return this.id == book.id;
//	}
	@Override
	public String toString(){
		return "id:"+this.id+"name:"+this.name;
	}
}


public class Demo5 {

	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add(new Book(1,"12345"));
		list.add(new Book(2,"aaaa"));
		list.add(new Book(3,"bbbb"));
		list.add(new Book(2,"aaaa"));
		
		ArrayList list2 = deleteRepeat(list);
		System.out.println(list2);
	
	}
	public static ArrayList deleteRepeat(ArrayList list){
		ArrayList newList = new ArrayList();
		Iterator it = newList.listIterator();
		while(it.hasNext()){
			Book book = (Book)it.next();
			if(!newList.contains(book)){
				newList.add(book);
			}
		}
		
		
		return newList;
	}
		
	
			
	}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值