java集合(类似python的列表)
一:学习方法
我们在学习一个类的时候,如果他是期其他类的实现类,我们在学习的时候,先学习他的共同的继承类,学习他们共有的方法,在学习他实现类的特殊方法。由共性--->特殊。
二:集合
1、集合和数组区别:
1 package test07; 2 3 import java.util.ArrayList; 4 import java.lang.Iterable; 5 import java.util.Iterator; 6 7 public class arr_test { 8 public static void main(String ...args){ 9 arr_Test(); 10 set_test(); 11 } 12 13 public static void arr_Test(){ //数组 14 int[] a={1,2,3,4,6}; 15 for (int i:a){ 16 System.out.print(i); 17 18 } 19 } 20 public static void set_test(){ 21 ArrayList<Integer> list_in=new ArrayList<Integer>();//集合 需要引用类型 22 list_in.add(111); 23 list_in.add(110); 24 list_in.add(113); 25 list_in.add(112); 26 Iterator<Integer> list_it= list_in.iterator(); 27 while (list_it.hasNext()){ 28 System.out.print(list_it.next()); 29 } 30 } 31 32 }
区别:
1、数组的一旦定义之后,初始化之后长度不可以改变。
2、集合内的元素为引用类型,基本类型需要使用其包装类进行进行操作,长度可变。
集合是java提供一种容器,为了存储多个数据。
2、ArrayList的继承关系:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
public interface List<E>
extends Collection<E>
public abstract class AbstractCollection<E>
extends Object
implements Collection<E>
ArrayList继承AbstractList抽象类 实现List接口,而List接口继承Collection超级接口。而类AbstractList 继承AbstractCollection抽象类。
继承Collection类的所有子类对其方法都进行重写,而超级接口Collection 的子类有Set 和List
public interface Set<E> extends Collection<E>
public interface List<E>
extends Collection<E>
LIst常用的子类:
ArrayList类、LinkedList类
public class ArrayList<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
Set接口常用的子类:
HashSet类、LinkedHashSet类
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, Serializable
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, Serializable
关系图:
![](https://images2017.cnblogs.com/blog/959846/201711/959846-20171114145545015-1103590210.png)
因为collection是所有这几类的超级接口,所以collection类的所有接口子类都需要重写。所以我们首先需要先学习collection类的所有接口。
Collection常用的方法如下:
1 package test07; 2 3 import org.omg.Messaging.SYNC_WITH_TRANSPORT; 4 5 import javax.swing.text.html.HTMLDocument; 6 import java.util.ArrayList; 7 import java.util.Collection; 8 import java.util.Iterator; 9 10 public class Collect_demo { 11 public static void main(String...args){ 12 add_demo(); 13 itor_demo(); 14 remov_Demo(); 15 } 16 public static void add_demo(){ 17 /* 18 *给集合添加元素。 19 * bool add(E e) 20 * 返回值为布尔类型,添加成功为true反之为false; 21 * int size() 返回集合的长度。 22 * bool contains(object) 是否包含元素。返回布尔值. 23 * void clear() 移除collection所有元素.无返回值. 24 */ 25 Collection<Integer> co_in=new ArrayList<>(); 26 co_in.add(1); 27 co_in.add(2); 28 boolean ret=co_in.add(3); 29 int set_len=co_in.size(); 30 System.out.print(set_len); 31 System.out.print(co_in); 32 System.out.print(ret); 33 System.out.print("+++++++++"); 34 System.out.print(co_in.contains(1)); 35 System.out.print("+++++++++"); 36 co_in.clear(); 37 System.out.print(co_in); 38 39 } 40 public static void itor_demo(){ 41 /* 42 因为collection 继承Iterator 其中 43 Iterator<E> iterator()返回值为iterator迭代器对象,所以根据这个对象 进行循环。 44 其中 bool hasNext()返回布尔值,表示当前的迭代器是否有下个元素。 45 e next()返回下个元素。 46 object[] toArray(collection) 47 */ 48 Collection<Integer> it=new ArrayList<>(); 49 it.add(1); 50 it.add(2); 51 it.add(3); 52 it.add(4); 53 Iterator<Integer> it_or=it.iterator(); 54 while (it_or.hasNext()){ 55 System.out.print(it_or.next()+"\n"); 56 } 57 Integer[] it_a=new Integer[it.size()]; 58 it.toArray(it_a); 59 System.out.print(it_a.length); 60 } 61 public static void remov_Demo(){ 62 Collection<Integer> re_cl=new ArrayList<>(); 63 /* 64 bool remove(object) 65 移除指定对象。返回值为布尔值 66 Collection<E> removeall(Collection<?> e) 67 移除传入Collection对象的内的值,如果传入的对象内值在被移除的集合,那么被移除,否则不移除。也可以出入原集合。 68 bool isEmpyt()返回布尔值,判断集合是否为空. 69 */ 70 re_cl.add(11); 71 re_cl.add(12); 72 re_cl.add(13); 73 re_cl.add(14); 74 System.out.print(re_cl); 75 boolean ret=re_cl.remove(11); 76 Collection<Integer> a=new ArrayList<Integer>(); 77 a.add(10); 78 a.add(18); 79 boolean ret_1=re_cl.removeAll(a); 80 boolean ret_2=re_cl.removeAll(re_cl); 81 System.out.print(re_cl); 82 System.out.print(ret); 83 System.out.print("------------"); 84 System.out.print(re_cl); 85 if(re_cl.isEmpty()){ 86 System.out.print("tis set is empty!"); 87 } 88 } 89 // public static void 90 }
java获取长度三种方式:
1、字符串 length()
2、数组 length
3、集合 size()
1 package test07; 2 3 import java.util.ArrayList; 4 5 public class test { 6 public static void main(String...args){ 7 func_1(); 8 } 9 public static void func_1(){ 10 String a="123"; 11 System.out.print(a.length()); 12 int[] a_ar=new int[3]; 13 a_ar[0]=2; 14 a_ar[1]=2; 15 a_ar[2]=2; 16 System.out.print(a_ar.length); 17 ArrayList<Integer> test=new ArrayList<>(); 18 test.add(1); 19 test.add(1); 20 test.add(1); 21 test.add(1); 22 System.out.print(test.size()); 23 } 24 }
学习是一种态度,坚持是质变的利器!