Collection 集合的定义和使用

Collection 集合的定义和使用,第1张

掌握Collection集合的定义和使用方法

1、Collection集合的作用:可以定义一个随时改变的数组

2、定义Collection集合的相关 *** 作:

Collection 抽象接口 定义集合的相关 *** 作

|-- List 列表 数组 接口 特点 :有序 可以重复

|--ArrayList

|-- LinkedArrayList

|-- Set "集合" 特点 : 无序 不重复

|---HashSet

3、改变集合中的元素方法:

增加一个对象 :add 在指定位置添加 add(i,o)

删除一个对象 : remove 移除指定位置的对象 remove(i,o)

获取元素个数 :size

删除所有元素 ,清空 : clear

判断某个集合中是否含有某个元素 :contains

判断某个集合是否为空 : isEmpty

判断两个集合是否相同(比较两个集合里面地内容) : equals

取两个集合的交集:retainAll

访问某个对象在某个位置的索引 :indexOf访问初始位置 lastIndexOf访问最后一次出现的位置

获取某个范围里面的对象 subList(i,o)

修改某个位置的值: set(i,0)

注:集合里面只能存放对象

4、集合的遍历:

(1)使用使用Iterator来遍历

hasNext 判断是否有元素

next 获取下一个对象

remove 删除当前遍历后的对象

(2)for -each (增强for循环) 快速循环

(3)for- i循环

ArrayList (连续的内存空间 )

优点:

访问方便 通过get ()方法就能访问

缺点:

元素的删除和添加效率低

LinkedList内部使用链表链接 不一定连续(基本不连续)

优点:增减删除效率高 缺点:访问

5、基本数据类型对应的包装类

byte char int long float double boolean

Byte Char Integer Long Float Double Boolean

ArrayList里面自动将基本数据类型包装为对应的类

6、将ArrayList转变为普通数组 toArray

7、lambda函数

8、自己写一个比较器:

今天所讲的Collection集合的使用比较简单,但是,还是对lambda 有点不是太了解。感觉今天讲的知识点虽然很枯燥,但是有必须要掌握。

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变;

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变;

Map:适合储存键值对的数据。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

创建一个student对象,对象了有一个属性,又来表示每个人的成绩

public class Student {

private int score;

public int getScore() {

return score;

}

public void setScore(int score) {

thisscore = score;

}

}

实现类

import javautilHashSet;

import javautilSet;

public class AddScore {

private static Set<Student> set=new HashSet<Student>();

public static void main(String[] args) {

//创建4个student对象,将他们全部加到set集合中

Student s=new Student();

ssetScore(50);

setadd(s);

Student s2=new Student();

s2setScore(54);

setadd(s2);

Student s3=new Student();

s3setScore(68);

setadd(s3);

Student s4=new Student();

s4setScore(60);

setadd(s4);

//实例化对象

AddScore add= new AddScore();

//调用方法,得到总成绩

int score=addaddScore(set);

//输出总成绩

Systemoutprintln(score);

}

//该方法用来遍历set集合,得出总成绩

public int addScore(Set<Student> set){

int allScore=0;

for (Student student : set) {

allScore+=studentgetScore();

}

return allScore;

}

}

迁移自 开源中国

第一反应:两重循环解决问题,对,问题是可以解决,但是通过小括号中的提示可以看出,明显是在考效率的问题。

所以这种O(n^2)的时间复杂度是不行的。

继续想了一下:一次循环,遍历其中一个集合,拿集合中的元素去第二个集合中通过二分查找法查找,确定是否重复。

所以这种时间复杂度是:O(nlogn),较之前好些,但是还有更好的,可以是O(n)嘛?

经过面试官的提醒:首先对两个集合按照升序排列,再对两个集合定义各自的游标,一次循环,通过游标查找相同元素,原理是:如果从A集合中取出的元素小于B集合中的元素,那么将A的游标下移;如果相等则将元素存入第三个集合中,并且将A的游标下移;如果大于B集合中的元素,则将B的游标下移;直到遍历完某一个集合为止。

如果有更好的还请多多指教。

如题目所示。

首先,我们先创建两个数组,如下:

1、当然我们可以采用遍历数组的方式做,如下:

这样子,我们找到了相同的元素,但是,数组中依然会存在相同的元素。

我们可以用得到后的数组,生成一个集合,这样子就得到了最终的结果

2、使用集合:

得到的结果是:

这样子,就直接得到了我们需要的结果(不考虑顺序)

再补充几个可变集合的方法

3我们可以试一下用谓词来做

打印的结果

可见,用谓词的话,更方便一些,我们可以把得到的结果,放到集合中

4我们也可以使用数组相减的方式

结果如下:

我们也可以将其转为集合

假如文章中有不对的地方,请您指出,我们共同进步。

以上就是关于Collection 集合的定义和使用全部的内容,包括:Collection 集合的定义和使用、Java中Set、List、Map集合类(接口)的特点及区别。分别有哪些常用实现类。、java创建一个HashSet对象,存储多个Student对象, for循环出每个元素,并计算学生总成绩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9723548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存