1.集合概述

java元转成分 java元素_Java

List的特点是元素有序、元素可重复。

Set集合的特点元素无序并且不可重复

 

2.Collection接口

具体方法可以查找JavaAPI

java元转成分 java元素_System_02

 

3.List接口

List集合特点就是元素有序,即元素的存入顺序和取出顺序一致。

ArrayList集合:可以看做一个长度可变的数组,add()和get()方法实现元素的存取。

package st.peter.list;

import java.util.ArrayList;

public class Demo01 {

	public static void main(String[] args) {
		ArrayList arryList = new ArrayList();
		//向集合中添加元素
		arryList.add("stu1");
		arryList.add("stu2");
		arryList.add("stu3");
		arryList.add("stu4");
		System.out.println("集合的长度:"+arryList.size());
		System.out.println("集合的第二个元素:"+arryList.get(1));
	}
}

ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式访问元素,因此ArrayList集合查找元素很便捷。

LinkedList集合

java元转成分 java元素_Java_03

集合内部是双向循环链表:增删操作有很高的效率。

package st.peter.list;

import java.util.LinkedList;

public class Demo02 {

	public static void main(String[] args) {
		LinkedList link = new LinkedList();
		link.add("stu1");
		link.add("stu2");
		link.add("stu3");
		link.add("stu4");
		System.out.println(link.toString());
		link.add(3,"student");
		link.addFirst("First");
		System.out.println(link);
		System.out.println(link.getFirst());
		link.remove(3);
		link.removeFirst();
		System.out.println(link);
		
	}
}

Iterator接口

package st.peter.list;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo03 {

	public static void main(String[] args) {
		ArrayList arrayList = new ArrayList();
		arrayList.add("a1");
		arrayList.add("a2");
		arrayList.add("a3");
		arrayList.add("a4");
		Iterator it = arrayList.iterator();
		while(it.hasNext()) {
			Object obj = it.next();
			System.out.println(obj);
		}
	}
}

JDK5.0新特性-foreach循环

语法格式:

for(容器中元素的类型 临时变量:容器变量){

             执行语句

}

package st.peter.list;

import java.util.ArrayList;

public class Demo04 {

	public static void main(String[] args) {
		ArrayList arrayList = new ArrayList();
		arrayList.add("Jack");
		arrayList.add("Rose");
		arrayList.add("Tom");
		for(Object obj:arrayList) {
			System.out.println(obj);
		}
	}
}

forecah循环不能改变数组中的元素

package st.peter.list;

import java.util.ArrayList;

public class Demo04 {

	public static void main(String[] args) {
		String[] str ={"Jack","Rose","Tom"};
		for(Object obj:str) {
			obj = "rr";
		}
		System.out.println(str[0]+str[1]+str[2]);
		for(int i=0;i<str.length;i++) {
			str[i] = "rr";
		}
		System.out.println(str[0]+str[1]+str[2]);
	}
}

Iterator迭代器对集合中的元素进行迭代时,如果调用了集合对象的remove()方法去删除元素,会出现异常。

package st.peter.list;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo05 {

	public static void main(String[] args) {
		ArrayList arrayList = new ArrayList();
		arrayList.add("Jack");
		arrayList.add("Annie");
		arrayList.add("Rose");
		arrayList.add("Tom");
		Iterator it = arrayList.iterator();
		while(it.hasNext()) {
			Object obj = it.next();
			if("Annie".equals(obj)) {
				arrayList.remove(obj);
			}
		}
		System.out.println(arrayList);
	}
}

解决方法(1)加break语句

package st.peter.list;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo05 {

	public static void main(String[] args) {
		ArrayList arrayList = new ArrayList();
		arrayList.add("Jack");
		arrayList.add("Annie");
		arrayList.add("Rose");
		arrayList.add("Tom");
		Iterator it = arrayList.iterator();
		while(it.hasNext()) {
			Object obj = it.next();
			if("Annie".equals(obj)) {
				arrayList.remove(obj);
				break;
			}
		}
		System.out.println(arrayList);
	}
}

(2)用迭代器本身的删除方法

package st.peter.list;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo05 {

	public static void main(String[] args) {
		ArrayList arrayList = new ArrayList();
		arrayList.add("Jack");
		arrayList.add("Annie");
		arrayList.add("Rose");
		arrayList.add("Tom");
		Iterator it = arrayList.iterator();
		while(it.hasNext()) {
			Object obj = it.next();
			if("Annie".equals(obj)) {
				it.remove();
			}
		}
		System.out.println(arrayList);
	}
}

 

4.Set接口

(1)HashSet集合:根据对象的哈希值来确定元素在集合中的存储位置

package st.peter.list;

import java.util.HashSet;
import java.util.Iterator;

public class Demo06 {

	public static void main(String[] args) {
		HashSet set = new HashSet();
		set.add("Jack");
		set.add("Eve");
		set.add("Rose");
		set.add("Rose");
		Iterator it = set.iterator();
		while(it.hasNext()) {
			Object obj = it.next();
			System.out.println(obj);
		}
	}
}

java元转成分 java元素_java元转成分_04

(2)TreeSet集合:以二叉树的方式来存储元素

package st.peter.list;

import java.util.Iterator;
import java.util.TreeSet;

public class Demo07 {

	public static void main(String[] args) {
		TreeSet ts = new TreeSet();
		ts.add("Jack");
		ts.add("Helena");
		ts.add("Helena");
		ts.add("Eve");
		Iterator it = ts.iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

 

5.Map接口:不能重复,键相同,值覆盖

package st.peter.list;

import java.util.HashMap;
import java.util.Map;

public class Demo08 {

	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("1", "Jack");
		map.put("2", "Rose");
		map.put("3", "Lucy");
		System.out.println("1:"+map.get("1"));
		System.out.println("2:"+map.get("2"));
		System.out.println("3:"+map.get("3"));
	}
}

Map的遍历方式:

第一种先遍历键,再根据键取出值。

package st.peter.list;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo08 {

	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("1", "Jack");
		map.put("2", "Rose");
		map.put("3", "Lucy");
		Set keySet = map.keySet();
		Iterator it = keySet.iterator();
		while(it.hasNext()) {
			Object key = it.next();
			Object value = map.get(key);
			System.out.println(key+":"+value);
		}
	}
}

另一种是先获得集合中所有的映射关系,然后从映射关系中取出键和值。

调用的是entrySet()方法:

package st.peter.list;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo10 {

	public static void main(String[] args) {
		Map map = new HashMap();
		map.put("1", "Jack");
		map.put("2", "Rose");
		map.put("3", "Lucy");
		Set entrySet = map.entrySet();
		Iterator it = entrySet.iterator();
		while(it.hasNext()) {
			Map.Entry entry = (Map.Entry)(it.next());
			Object key = entry.getKey();
			Object value = entry.getValue();
			System.out.println(key+":"+value);
		}
	}
}

 

6.泛型

泛型的语法:

ArrayList<参数化类型> list = new ArrayList<参数化类型>();

package st.peter.list;

import java.util.ArrayList;

public class Demo09 {

	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("String");
		list.add("Collection");
		for(String s:list) {
			System.out.println(s);
		}
	}
}

 

8.Arrays工具类

sort()方法对数组进行排序

binarySearch(Object[] a,Object key)方法查找数组中的元素
copyOfRange(int[] original,int from,int to)拷贝数组中的元素
fill(Object[] a,Object val)用一个值替换数组中所有的值
toString(int[] arr)把数组转化为字符串