java集合set查询,Java 集合(List/Set/Map)

Java 集合(List/Set/Map)

05be010aaf6961c4664fb69c1e88c4ab.png

List

1.常见的数据结构

1.数组(ArrayList)

查询和修改效率高,但是删除和插入效率低。

2.链表(LinkedList)

插入和删除效率高,修改和查询效率低(要遍历)

3.堆栈(栈) 特点 FILO

先进后出(FILO) / 后进先出

4.队列 FIFO

先进先出(FIFO) First input first out

2.集合框架的体系

1.继承体系

Collection(所有集合类接口的超级接口)

|--List:特点 有序(添加的顺序)可以重复的数据

|--ArrayList  :查询和修改效率高,但是删除和插入效率低。(线程不安全)

|--LinkedList :插入和删除效率高 (线程不安全)

|--Vector : 线程安全

2.如何选择

到底怎么使用如何选择:

1.有序(添加的顺序)可以重复的数据

2.如果查询和修改的频率高-ArrayList

3.如果插入删除频率高-LinkedList

4.如果要求线程安全 Vector

3.ArrayList

1多查询API

2.基本数据的维护 常用的CRUD 方法

CRUD:增删踢查

3.集合的遍历

1.for

2.增强for循环

无法获取下标

3.迭代器

就是从下标0开始遍历

1.单向迭代器

Iterable 接口  有接口方法

Iterable 接口  有接口方法   Iterator iterator();

返回一个Iterator

Iterator

hasNext() 是否有下一个(不会移动指针)

next()  返回下一个元素(要移动指针)

remove() 删除下一个元素

注意:如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用了 remove 方法

ConcurrentModificationException:不能在迭代过程中对数据源进行改变

2.双向迭代器

是List下面的方法

所有的list的实现类都可以获取 这个对象

//得到一个  双向迭代器

ListIterator listIterator = list.listIterator();

//从左往右迭代

while (listIterator.hasNext()) {

System.out.println(listIterator.next());

}

//反向迭代

while (listIterator.hasPrevious()) {

System.out.println(listIterator.previous());

4.LinkedList

1.多查询API

2.基于数据结构的不同,他提供了很多操作头 和尾的方法

Set

HashSet(不可重复,无序)

观察不能重复是从哪里得出来的。并且在实际业务中覆写equals根据业务需求。

覆写HashCode

//当任何一个hashCode值不同,那么就是执行新增,一样就执行不可新增

public inthashCode() {

return age+name.hashCode();//使每个对象调用的HashCode的值都相等。

覆写equals

//比较地址值,如果相同,则不新增

//覆写equals了之后,先一个值一个值的判断。如果相等,那么就返回false,那么就新增。true为不新增。

//当对象中的字段有一个或者多个不同时,那么就新增上去。如果所有字段都相同时,则不新增。

public booleanequals(Objectobj) {

if(obj instanceofPerson) {//先确定传入的值是Person类型的。意思就是传入一个Person类型的对象或者Person子类的对象

//给HashSet中,进行CRUD存储

Personp= (Person)obj;

if(p.getAge() !=this.getAge()){

return false;

}else{

if(p.getName().equals(this.getName())){

return true;

}

}

}

return false;

TreeSet(不可重复,无序,可指定排序)

根据业务区去实现Comparable接口,并且覆写compareTo方法

创建一个比较器去实现Comparator接口,并且覆写compare方法

Comparable

//谁调用这个方法,这个this就表示当前对象,即上一次对象。

//如果升序,那么大的值就向后排。

public intcompareTo(Objecto) {

if(o instanceofPerson) {

Personp= (Person)o;

if(p.getAge()>this.getAge()) {

return-1;

}else if(p.getAge()

return1;

}

}

return0;

}

Comparator

public intcompare(Objecto1, Objecto2) {

if(o1 instanceofAnimal &&o2 instanceofAnimal) {

Animala= (Animal)o1;

Animalb= (Animal)o2;

if(a.getAge()>b.getAge()){

return1;

}else if(a.getAge()

return-1;

}

}

return0;

}

Map

Map

HashMap与HashSet中的不可重复无序是一样的

TreeMap

和TreeSet中的排序两种方式(比较器-自定义比较Compartor、实现接口-自然排序Comparable)一样

Collections

列如数组Array有工具类Arrays

Collections是Collection的工具类

会使用常见的Collections中的方法就好

Properties

将一个或者多个值存放在内存中,然后创建一个文件存放,保存在数据库中(硬盘)。

public class PropertiesDemo{

public static voidmain(String[]args)throws IOException{

//set();

Properties ps=new Properties();

/**

*  void load(InputStream inStream)  从输入流中读取属性列表(键和元素对)。

*/

//指定一个文件路径

//InputStream inStream =  new FileInputStream("db.txt");

InputStream inStream=new FileInputStream("E:/workspace/Day21_Map/db.txt");

//把数据加载到内存

ps.load(inStream);

System.out.println(ps);

}

public static void set()throws FileNotFoundException{

//创建Properties

Properties ps=new Properties();

//放值

ps.setProperty("AAA","狗蛋蛋");

//取值

String property=ps.getProperty("AAA");

//把文件保存到电脑上

ps.list(new PrintStream("db.txt"));

System.out.println(property);

System.out.println(ps);

}

}

泛型

//1.8 以后的写法

//ArrayList<> arrayList = new ArrayList<>();

//泛型 不支持基本数据类型

Pointp=newPoint<>();

p.setX(1);

p.setY(1.00);

ArrayListarray=new ArrayList<>();

array.add(p);

System.out.println(array);

/**

* 泛型的上下限

* ?号  :表示通配符,不确定的类型,可以表示任意类型【? extends Object】 ;

? extends Number :表示通配符?的上限 ,必须是Number及Number的子类

? Super   Number: 表示通配符 ?的下限,必须是Number及Number的父类

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值