Java Collection集合(2)、泛型——Java学习笔记16(补)

1.小练习

去除ArrayList中重复字符串元素

public static ArrayList<String> getSingle(ArrayList<String> list){
	ArrayList<String> newList = new ArrayList<String>();
	Iterator<String> itr = list.iterator();
	while (itr.hasNext()) {
		String obj = itr.next();
		if (!newList.contains(obj)) {		//contains()方法
			newList.add(obj);
		}	
	}
	return newList;
}

contain()方法判断是否包含
remove()方法判断自定义对象是否相同并删除
底层均依赖于.equals()方法

2.LinkedList类

特有method
void addFirst(E e); void addLast(E e);
E removeFist(); E removeLast();
E get(int index);

3.泛型generic

泛型用来避免类型转换异常(ClassCastException),<>中必须是引用数据类型,

(1)声明方法

在类上声明泛型:

class Name<T> {...}

方法泛型最好与类的泛型一致,如果不一致需要在方法上声明该泛型
在方法上声明泛型:

public<q> void xxx(Q q){...}

静态方法必须声明自己的泛型,因为静态方法是随着类的加载而进内存的,可能还没有声明类上的泛型。

public static<W> void xxx(w w) {...}

泛型接口:

interface Inter<T>{...}		//创建泛型的接口

class Demo implements Inter<String> {	//实现带有泛型的接口
	@Override
	...
}
(2)泛型通配符<?>

当右边的泛型是不确定时,左边可以指为?

List<?> list = new ArrayList<String>();

? extends E : 向下限定,E及其子类

4.foreach 增强for循环

格式:

for(元素数据类型 变量 : 数组或者Collection集合){
	变量直接使用;
}

foreach底层依赖的是迭代器Iterator

5.List中三种删除元素的方法

普通for循环可以实现
for(int i = 0 ; i < list.size() ; i++){
	if("b".equals(list.get(i))){
		list.remove(i--);		//使用i--,否则会跳过一个数值
	}
}
Iterator迭代器

无法删除元素,因为会出现ConcurrentModificationException(并发修改异常)。

增强for循环

无法删除元素,因为foreach的底层使用迭代器Iterator实现的。

6.静态导入(导入类中的静态方法) jdk1.5新特性 不用

导入类中的静态方法,使用时可以直接使用方法,不需要加类名。

import static 包名.类名.方法名;
import static java.util.Arrays.sort;
...
sort(arr);

7.可变参数ChangeableArgs jdk1.5新特性

可变参数其实是一个数组

public void print(int ... xx);		//xx为数组

print(11,22,33);			//可变参数的参数列表中可以有任意个元素

8.集合和数组的互转

Arrays.asList() :数组转集合方法
  1. 底层用的是可变参数;
  2. 转换后的集合无法增删改元素,但是可以用集合的方法操作元素;
  3. 基本数据类型的数组转换成集合,会将整个数组当作一个对象来转换,改进方法:使用包装类。
Collection中的toArray(); 集合转数组方法

方法:<T> T toArray(T t);
使用:

String[] arr = list.toArray(new String[0]);
//新建数组的长度大于list的size,分配的长度为数组的长度
//反之,分配的长度等于list的size

文中出现的单词

concurrent 并发的;同时发生的
iterator 迭代器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值