List、Set、数据结构、Collections

List、Set、数据结构、Collections
数据结构
stack 堆栈 仅允许在标的一端进行插入和删除操作,不允许在其他位置添加,查找删除等操作。
先进后出 压栈 弹栈 队列
数组 优点查找快 但是增删慢 它是一连串的地址
链表 查找元素慢 但是增删元素快 它是多个节点通过地址链接起来

LIST集合 list集合是属于Collection接口中的子类所以list可以调用Collection中的方法。
list 元素允许出现重复 存入元素与取出顺序是一致的
list中的一些方法
add();
size();
remove()
get();
set();
ArrayList 是list的子类 是数组结构

LinkedList是属于链表结构,方便元素的添加,删除集合。是属于双向链表所以有很多操作首尾的函数
addFirst();
addLast();
removeFirst();
removeLast();
getFirst();
getLast();
pop();
push();
isEmpty();

Set接口 同样继承Collection接口 但是Set接口中元素是无序的而且元素不允许重复出现
依赖HashSet 中的hashCode equals方法来实现元素的唯一性
在1.8中哈希表存储数据采用数据+链表+红黑树实现,当链表超过8时转化为红黑树
新建一个Hash对象
HashSet<要放入数组的类型> a = new HashSet<数组类型>();
a.add()就可以增加对象。

但是在给HashSet存放自定义元素中需要重写对象中的hashCode equal方法 才能保证对象的唯一性
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Student student = (Student) o;
return age == student.age &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
如果我们想创建一个有顺序且保证元素唯一的对象
我们可以创建HashSet下的一个子类 LinkedHashSet
用多态来创建
Set set = new LinkedHashSet();
再通过迭代器来遍历
Iterator it = set.Iterator();

可变参数
当我们确定参数类型却不确定参数个数可以使用可变参数 可变参数的底层是一个数组
根据传入的参数不同就会创建不同的数组来储存这些参数的个数
public static void math(String[]…args){}
但是我们不可以这样传参
public static void main(int…b,String[]…args) 非法
public static void main(int c,int b,String[]…args) 这样是可以通过的
我们也可以传入一个object类型的参数
public static void main(Object…args) 究极传参
可变参数一定要写在末尾位置,可变参数只能存在一个

Collections一些常用的功能
clear()方法
toArray方法 集合名.toArray();转换为object
强制转换为String[] a=list.toArray(new String[0]);
contains方法判断数组是否为空
boolean addAll(Collection c, T… elements) :往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。

其中值得注意的是
Collection.sort();
正序排序数组

当我们想排序类里面传过来的对象时我们需要在类里面引用
implements Comparable
然后要在里面重写 compareTo()方法
return this.age-o.age;
这是以age作为升序排序
我们也可以通过Comparetor 定义自己的规则
同样也需要在类中重写 compare方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值