集合框架(二)
一、LinkedList的特有功能
* public void addFirst(E e)及addLast(E e) //在头部、尾部添加
* public E getFirst()及getLast() //得到头、尾
* public E removeFirst()及public E removeLast() //删除头尾
* public E get(int index); //根据索引获取元素
二、泛型基本使用
* A:泛型好处
* 提高安全性(将运行期的错误转换到编译期)
* 省去强转的麻烦
* B:泛型基本使用
* <>中放的必须是引用数据类型
* C:泛型使用注意事项
* 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
* D:ArrayList存储字符串和自定义对象并遍历泛型版
1
2 3 4 5 6 7 8 9 10 11 12 13 |
public
static
void
main(
String
[] args) { ArrayList<Person> list = new ArrayList<>(); list.add( new Person( "张三" , 23 )); list.add( new Person( "李四" , 24 )); list.add( new Person( "王五" , 25 )); list.add( new Person( "赵六" , 26 )); Iterator<Person> it = list.iterator(); while (it.hasNext()) { Person p = it.next(); //将集合中的每一个元素用Person记录 System.out.println(p.getName() + "..." + p.getAge()); } } |
三、三种迭代能否删除元素
1,普通for循环
普通for循环,可以删除,但是索引要--:
1
2 3 4 5 |
for
(
int
i =
0
; i < list.size(); i++) { if ( "b" .equals(list.get(i))) { list.remove(i--); //通过索引删除元素 } } |
2,迭代器循环
* 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
1
2 3 4 5 6 7 |
Iterator<
String
> it = list.iterator(); while (it.hasNext()) { if ( "b" .equals(it.next())) { //list.remove("b"); //不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常 it.remove(); } } |
3,增强for循环
* 增强for循环不能删除
四、可变参数
* A:可变参数概述
* 定义方法的时候不知道该定义多少个参数
* B:格式
* 修饰符 返回值类型 方法名(数据类型… 变量名){}
* C:注意事项:
* 这里的变量其实是一个数组
* 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
五、Arrays工具类的asList()方法的使用
数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用其他集合中的方法
例1:
1
2 3 4 5 6 |
public
static
void
demo1() { String [] arr = { "a" , "b" , "c" }; List< String > list = Arrays.asList(arr); //将数组转换成集合 //list.add("d"); //不能添加 System.out.println(list); } |
例2:
1
2 3 4 5 6 7 8 |
public
static
void
demo2() { //int[] arr = {11,22,33,44,55}; //List<int[]> list = Arrays.asList(arr); 基本数据类型的数组转换成集合,会将整个数组当作一个对象转换 //System.out.println(list); Integer[] arr = { 11 , 22 , 33 , 44 , 55 }; //将数组转换成集合,数组必须是引用数据类型 List<Integer> list = Arrays.asList(arr); System.out.println(list); } |
例3:
1
2 3 4 5 6 7 8 9 10 11 |
ArrayList<
String
> list =
new
ArrayList<>(); list.add( "a" ); list.add( "b" ); list.add( "c" ); list.add( "d" ); String [] arr = list.toArray( new String [ 10 ]); //当集合转换数组时,数组长度如果是小于等于集合的size时,转换后的数组长度等于集合的size //如果数组的长度大于了size,分配的数组长度就和你指定的长度一样 for ( String string : arr) { System.out.println(string); } |