[集合]List

List

存取有序,有索引,可以重复


ArrayList去除集合中字符串的重复值(字符串的内容相同)

public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("a");
    list.add("a");
    list.add("b");
    list.add("b");
    list.add("b");
    list.add("c");
    list.add("c");
    list.add("c");
    list.add("c");
    
    System.out.println(list);
    ArrayList newList = getSingle(list);
    System.out.println(newList);
   }
   /*
    * 去除重复
    * 1,返回ArrayList
    * 2,参数列表ArrayList
    */
   public static ArrayList getSingle(ArrayList list) {
    ArrayList newList = new ArrayList();   //创建一个新集合
    Iterator it = list.iterator();     //获取迭代器
    while(it.hasNext()) {       //判断老集合中是否有元素
     String temp = (String)it.next();   //将每一个元素临时记录住
     if(!newList.contains(temp)) {    //如果新集合中不包含该元素
      newList.add(temp);      //将该元素添加到新集合中
     }
    }
    return newList;         //将新集合返回
   }

通过分析源码,可以发现 contains()方法中也是用equals() 函数来判断的,而equals()方法,如果用来判断对象,会直接对比引用对象的地址,而不同对象的地址是不一样的,返回的结果总会是 true ,因此用来判断对象 要在 Person 类中重写 equals() 方法。

总结: 

  contains() 和 remove() 方法中都是用 equals()方法来进行对比的,所以如果集合中存储的是对象,要重写 equals() 方法 

LinkedList 基本方法

 * LinkedList 基本方法 
public static void main(String[] args) {
	LinkedList list = new LinkedList();
	list.add("e");
	list.add("e");
	list.add("e");
	list.add("e");
	list.addFirst("k");
	list.addLast("z");
	System.out.println(list);
	System.out.pr intln(list.getFirst());
	System.out.println(list.getLast());
	System.out.println(list.removeLast());
	System.out.println(list.getLast());
	System.out.println(list.removeFirst());
	System.out.println(list);
	System.out.println(list.get(0));         //取得索引位置元素

三种迭代的能否删除(掌握)
* 普通for循环,可以删除,但是索引要--
* 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
* 增强for循环不能删除

Arrays工具类的asList()方法的使用(掌握)
* A:案例演示
	* Arrays工具类的asList()方法的使用
	* Collection中toArray(T[] a)泛型版的集合转数组

集合嵌套之ArrayList嵌套ArrayList(掌握)
* A:案例演示
	* 集合嵌套之ArrayList嵌套ArrayList

好的 突然

原文地址:https://www.cnblogs.com/gaoyang666/p/11188197.html