java 视图_java中的集合和视图

一、集合的概念

何为集合,集合就是相当于一个对象的容器。集合是类似数组的一个作用。既然有了数组,为何还要有集合呢,由于数组对象一旦创建,其大小便不可以更改,我们只能往数组中存放创建时数量的对象。而集合中的长度却是动态可变化的,我们可以往集合中添加任意数量的对象。并且我们可以通过集合更方便地实现数据结构如队列,栈等等。在集合中我们更可以定义自己想要的操作。

二、集合的定义

java中集合类的基本接口是Collection,实现集合接口,需要实现集合接口中的一下方法:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 class ExtendCollection implements Collection{2

3 public void forEach(Consumer super T>action) {4 //TODO Auto-generated method stub

5

6 }7

8 public intsize() {9 //TODO Auto-generated method stub

10 return 0;11 }12

13 public booleanisEmpty() {14 //TODO Auto-generated method stub

15 return false;16 }17

18 public booleancontains(Object o) {19 //TODO Auto-generated method stub

20 return false;21 }22

23 public Iteratoriterator() {24 //TODO Auto-generated method stub

25 return null;26 }27

28 publicObject[] toArray() {29 //TODO Auto-generated method stub

30 return null;31 }32

33 public T[] toArray(T[] a) {34 //TODO Auto-generated method stub

35 return null;36 }37

38 public booleanadd(T e) {39 //TODO Auto-generated method stub

40 return false;41 }42

43 public booleanremove(Object o) {44 //TODO Auto-generated method stub

45 return false;46 }47

48 public boolean containsAll(Collection>c) {49 //TODO Auto-generated method stub

50 return false;51 }52

53 public boolean addAll(Collection extends T>c) {54 //TODO Auto-generated method stub

55 return false;56 }57

58 public boolean removeAll(Collection>c) {59 //TODO Auto-generated method stub

60 return false;61 }62

63 public boolean removeIf(Predicate super T>filter) {64 //TODO Auto-generated method stub

65 return false;66 }67

68 public boolean retainAll(Collection>c) {69 //TODO Auto-generated method stub

70 return false;71 }72

73 public voidclear() {74 //TODO Auto-generated method stub

75

76 }77

78

79 public Spliteratorspliterator() {80 //TODO Auto-generated method stub

81 return null;82 }83

84 public Streamstream() {85 //TODO Auto-generated method stub

86 return null;87 }88

89

90 public StreamparallelStream() {91 //TODO Auto-generated method stub

92 return null;93 }

View Code

在Collection接口中使用了Iterator接口,Iterator接口的内部组成如下:

public interface Iterator{voidremove();

E next();

boolean hasNext();

}

通过实现我们的Iterator,Iterator就是一个迭代器,通过以下代码我们就可以循环遍历集合中的每一个元素:

List list = new ArrayList();

list.add("a");

list.add("b");

list.add("c");//获取迭代器

Iterator iterator =list.iterator();//判断集合中是否存在下一个元素

while(iterator.hasNext()){//获取集合中的元素

String str =iterator.next().toString();

System.out.println(str);

}

另外我们还可以使用for each去循环遍历集合中的元素:这种方式在实际上原理就是使用了上面的代码进行遍历。

for(String item: list){

System.out.println(item);

}

for each关键字用于实现Iterable接口的对象,Iterable接口对象中只有一个方法,即获取迭代器的方法

public interface Iterable{

Iteratoriterator();

}

java中的集合框架接口

5f72f067dbc725b2d7b34c9ac75832a7.png

java中的集合框架类

74991b2588d3a5518e8e79f9890a1c5e.png

三、视图的概念

java中的视图,可以说其实就是一个具有限制的集合对象,只不过这里的不是集合对象,而是一个视图对象。例如:这里有一个Test类

Test[] tests = new Test[10];

List testList = Arrays.asList(tests);

这里的testList是一个视图对象,具有访问数组元素set,get的方法。但是如果调用改变数组的方法就会抛出异常。所以可以说视图对象可以说是具有限制的集合对象。

利用java类库中的方法我们可以获得不可更改视图,子视图等等,这些视图对于原对象具有不同的操作权限。

四、java中集合和数组的转换

将数组转换成集合

String[] values = {"my","a"};

HashSet test = new HashSet(Arrays.asList(values));

将集合转换成数组

String[] values = test.toArray(new String[0]);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值