欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA知识点总结(六)(集合)

程序员文章站 2022-07-20 10:07:12
第十九章 集合 一、数组弊端: 数组长度是固定的,无法继续添加元素。 二、什么是集合: Java提供一个集合类,它的长度是可以改变的,能储存任意的对象,长度随着元素的增加而增加。 三、集合和数组的区别: 1.数组:能存放引用数据类型和基本数据类型。 2.集合:只能存放引用数据类型(对象),即使存放基 ......

第十九章  集合

一、数组弊端:

  数组长度是固定的,无法继续添加元素。

二、什么是集合:

  java提供一个集合类,它的长度是可以改变的,能储存任意的对象,长度随着元素的增加而增加。

三、集合和数组的区别:

  1.数组:能存放引用数据类型和基本数据类型。

  2.集合:只能存放引用数据类型(对象),即使存放基本数据类型,也会自动帮你装箱,把基本数据类型转换为引用数据类型。

  3.数组长度是固定的,集合长度能够改变。

四、什么时候用数组,什么时候用集合?

  1.如果元素个数固定,用数组

  2.对元素进行增删改查操作时,使用集合。

五、集合类:

1、创建一个集合:

1 collection c = new arraylist();

2、向集合内添加元素:

1 collection c = new arraylist();
2 boolean b1 = c.add("abc");
3 boolean b2 = c.add(10);
4 boolean b3 = c.add(true);                   

3、删除集合内指定元素:

1 arraylist c2 = new arraylist();
2 c2.add("a");
3 c2.add("b");
4 c2.add("c");
5 system.out.println(c2);
6     
7 //从集合中移除指定元素
8 c2.remove("b");
9 system.out.println(c2);

4、判断一个集合是否为空:

1 //判断一个集合是否为空
2 system.out.println(c2.isempty());

5、获取集合的长度:

1 // 获取集合当中的长度
2 system.out.println(c2.size());

7、清空集合内的所有元素:

1 // 清空集合内所有元素
2 c2.clear();
3 system.out.println(c2);

8、合并两个集合:

1 c1.addall(c2);

9、从c1中删除两个集合的交集:

1 c1.removeall(c2);

10、判断c1中是否完全包含c2:

1 //boolean res = c1.containsall(c2);
2 //system.out.println(res);

11、取交集,将交集的值赋值给c1:

1 boolean b1 = c1.retainall(c2);
2 system.out.println(b1);
3 system.out.println(c1);

12、通过数组遍历集合:

collection c = new arraylist();
c.add("a");
c.add("b");
c.add("c");
//将集合转化为数组,所有元素提升为object类型
object []arr = c.toarray();
for(int i = 0;i<arr.lengthi;i++){
       system.out.println(arr[i]); 
}

六、arraylist集合:

1、使用迭代器遍历集合:

 1 list list = new arraylist();
 2         list.add("a");
 3         list.add("2");
 4         list.add("c");
 5         list.add("d");
 6             
 7         //1.遍历集合
 8         iterator it = list.iterator();
 9         while(it.hasnext()){
10             system.out.pringln(it.next());    
11             }
12         }

2、并发修改异常:

  在迭代集合过程中,是不允许修改集合结构的,比如添加,删除元素(个数的改变),如果改变了,就会发生并发修改异常。

3、list 当中特有的迭代器,在删除修改时,不会造成并发修改异常。

1 listiterator it = list.listiterator();

4、去除list集合中的重复元素:

 1     static arraylist getsingleele(arraylist list) {
 2         // 1.创建一个新的集合
 3         arraylist newa1 = new arraylist();
 4         // 2.将一次取出每一个元素
 5         iterator itr = list.iterator();
 6         while (itr.hasnext()) {
 7             object obj = itr.next();
 8             // 3.每次取出元素都会判断新集合中已经有该元素
 9             // 4.如果是已有元素,不把元素存放到新集合中
10             if (!newa1.contains(obj)) {
11                 newa1.add(obj);
12             }
13         }
14         //system.out.println(newa1);
15         return newa1;
16     }

5、去除集合内重复的元素为对象时,重写equals方法:

 1 class student {
 2     string name;
 3     int age;
 4 
 5     student(string name, int age) {
 6         this.name = name;
 7         this.age = age;
 8     }
 9 
10     @override
11     public string tostring() {
12         return "student [name=" + name + ", age=" + age + "]";
13     }
14 
15     // 做对象的比较,不想让其对比地址,必须要覆盖equals 根据自己的需求来定义什么时候相等(也可以通过快速生成)
16     public boolean equals(object obj) {
17         student stu = (student) obj;
18         return this.name.equals(stu.name) && this.age == stu.age;
19     }
20 
21 }

6、linkedlist集合:

1         linkedlist list = new linkedlist();
2         list.add("a");
3         list.add("b");
4         list.add("c");
5         system.out.println(list);

7、vector集合:

 1     public static void main(string[] args) {
 2         //vector 只是在内部进行了加锁,更加的安全
 3         vector v = new vector();
 4         v.add("a");
 5         v.add("b");
 6         v.add("c");
 7         system.out.println(v);
 8 
 9     }
10 
11 }