forked from Kinetikm/TextClassfierProject
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyOwnArrayList.java
More file actions
99 lines (94 loc) · 2.56 KB
/
Copy pathMyOwnArrayList.java
File metadata and controls
99 lines (94 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package src.result.others;
import java.util.ArrayList;
import java.lang.Exception;
import java.util.Iterator;
/**
*
* @author User
*/
public class MyOwnArrayList <E> implements Iterable<Object>{
private Object[] ElementData;
MyOwnArrayList(){
this(10);
}
MyOwnArrayList(int i){
if (i < 0)
throw new IllegalArgumentException("Illegal Capacity: "+i);
this.ElementData=new Object[i];
}
public void add(Object ob){
int i=0;
for(i=0;i<ElementData.length;i++)if(ElementData[i]==null)break;
if(i==ElementData.length)ensureCapacity(ElementData.length+1);
ElementData[i]=ob;
}
public int size(){
int length=ElementData.length;
return length;
}
public int indexOf(Object ob){
int index = 0;
for(int i=0;i<ElementData.length;i++)if(ob.equals(ElementData[i]))return i;
return -1;
}
public boolean contains(Object ob){
return indexOf(ob)>0;
}
public void remove(int index){
System.arraycopy(ElementData, index+1, ElementData, index, ElementData.length-index-1);
ElementData[ElementData.length-1] = null;
Object[] NewElementData=new Object[ElementData.length-1];
System.arraycopy(ElementData, 0, NewElementData, 0, ElementData.length-1);
ElementData=new Object[NewElementData.length];
ElementData=NewElementData;
}
public void remove(Object ob){
int index=0;
for(int i=0;i<ElementData.length;i++)if(ob.equals(ElementData[i])){
index=i;
break;
}
remove(index);
}
public void set(int index,Object ob){
ElementData[index]=ob;
}
public void clear(){
for(int i=0;i<ElementData.length;i++)ElementData[i]=null;
ElementData=new Object[0];
}
private void ensureCapacity(int copacity){
if(copacity-ElementData.length>0){
Object[]NewElementData=new Object[ElementData.length+1];
System.arraycopy(ElementData, 0, NewElementData, 0, ElementData.length);
ElementData=new Object[NewElementData.length];
ElementData=NewElementData;
}
}
/*
Для проверки методов
*/
public void showAll(){
for(Object x:ElementData)System.out.println("Element: "+x);
}
@Override
public Iterator<Object> iterator() {
return new Iterator() {
int i;
@Override
public boolean hasNext() {
return i!=ElementData.length;
}
@Override
public Object next() {
i++;
return ElementData[i-1];
}
};
}
}