属性可以是只读只写啊,而方法只能是调用。
而且属性一般都会返回值,而方法却是自定义的。
属性你能传什么类进去,你也能得到相同的类型。
而且,属性在可写情况下只能传一个值,而方法可以传多个值,这些值都是写在括号里,而属性则是直接用等号连接。比如:
这些都是属性:
int c = a.Count; //Array的Count是只读
a[5] = "34";
这些都是方法:
a.Add("test"); //可以传值进去,是在括号里写
a.Sort();
public class News{ private String title; private String content; private Date publishtime; public void setTitle(String title){ this.title=title; } public void setContent(String content){ this.content=content; } public void setPublishtime(String publishtime){ this.publishtime=publishtime;} public String getTitle(){ return title;} public String getContent(){ return content;} public Date getPublishtime(){ return publishtime;}} ///////上述是新闻类List res=获取list;for(News n:res){ n.getTitle();//获取标题 n.getContent();//获取内容 n.getPublishtime();//获取发布时间}。
List方法摘要 boolean add(E e) 向列表的尾部添加指定的元素(可选操作)。
void add(int index, E element) 在列表的指定位置插入指定元素(可选操作)。 boolean addAll(Collection extends E> c) 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。
boolean addAll(int index, Collection extends E> c) 将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。 void clear() 从列表中移除所有元素(可选操作)。
boolean contains(Object o) 如果列表包含指定的元素,则返回 true。 boolean containsAll(Collection> c) 如果列表包含指定 collection 的所有元素,则返回 true。
boolean equals(Object o) 比较指定的对象与列表是否相等。 E get(int index) 返回列表中指定位置的元素。
int hashCode() 返回列表的哈希码值。 int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
boolean isEmpty() 如果列表不包含元素,则返回 true。 Iterator iterator() 返回按适当顺序在列表的元素上进行迭代的迭代器。
int lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。 ListIterator listIterator() 返回此列表元素的列表迭代器(按适当顺序)。
ListIterator listIterator(int index) 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 E remove(int index) 移除列表中指定位置的元素(可选操作)。
boolean remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。 boolean removeAll(Collection> c) 从列表中移除指定 collection 中包含的其所有元素(可选操作)。
boolean retainAll(Collection> c) 仅在列表中保留指定 collection 中所包含的元素(可选操作)。 E set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。
int size() 返回列表中的元素数。 List subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
Object[] toArray() 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。 T[] toArray(T[] a) 返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
Map方法摘要 void clear() 从此映射中移除所有映射关系(可选操作)。 boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。 Set> entrySet() 返回此映射中包含的映射关系的 Set 视图。
boolean equals(Object o) 比较指定的对象与此映射是否相等。 V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
int hashCode() 返回此映射的哈希码值。 boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。
Set keySet() 返回此映射中包含的键的 Set 视图。 V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。
void putAll(Map extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。 V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
int size() 返回此映射中的键-值映射关系数。 Collection values() 返回此映射中包含的值的 Collection 视图。
1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小2、如何使用ArrayList 最简单的例子:ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List.RemoveAt(5);//将第6个元素移除 for( int i=0;i <3;i++ ) //再增加3个元素 List.Add(i+20); Int32[] values = (Int32[])List.ToArray(typeof(Int32));//返回ArrayList包含的数组 这是一个简单的例子,虽然没有包含ArrayList所有的方法,但是可以反映出ArrayList最常用的用法3、ArrayList重要的方法和属性1)构造器 ArrayList提供了三个构造器: public ArrayList(); 默认的构造器,将会以默认(16)的大小来初始化内部的数组 public ArrayList(ICollection); 用一个ICollection对象来构造,并将该集合的元素添加到ArrayList public ArrayList(int); 用指定的大小来初始化内部的数组2)IsSynchronized属性和ArrayList.Synchronized方法 IsSynchronized属性指示当前的ArrayList实例是否支持线程同步,而ArrayList.Synchronized静态方法则会返回一个ArrayList的线程同步的封装。
如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用lock来保持线程同步,例如: ArrayList list = new ArrayList(); //。 lock( list.SyncRoot ) //当ArrayList为非线程包装的时候,SyncRoot属性其实就是它自己,但是为了满足ICollection的SyncRoot定义,这里还是使用SyncRoot来保持源代码的规范性 { list.Add( “Add a Item” ); } 如果使用ArrayList.Synchronized方法返回的实例,那么就不用考虑线程同步的问题,这个实例本身就是线程安全的,实际上ArrayList内部实现了一个保证线程同步的内部类,ArrayList.Synchronized返回的就是这个类的实例,它里面的每个属性都是用了lock关键字来保证线程同步。
3)Count属性和Capacity属性 Count属性是目前ArrayList包含的元素的数量,这个属性是只读的。 Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。
4)Add、AddRange、Remove、RemoveAt、RemoveRange、Insert、InsertRange 这几个方法比较类似 Add方法用于添加一个元素到当前列表的末尾 AddRange方法用于添加一批元素到当前列表的末尾 Remove方法用于删除一个元素,通过元素本身的引用来删除 RemoveAt方法用于删除一个元素,通过索引值来删除 RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除 Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动 InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动 另外,还有几个类似的方法: Clear方法用于清除现有所有的元素 Contains方法用来查找某个对象在不在列表之中 其他的我就不一一累赘了,大家可以查看MSDN,上面讲的更仔细5)TrimSize方法 这个方法用于将ArrayList固定到实际元素的大小,当动态数组元素确定不在添加的时候,可以调用这个方法来释放空余的内存。6)ToArray方法 这个方法把ArrayList的元素Copy到一个新的数组中。
4、ArrayList与数组转换 例1: ArrayList List = new ArrayList(); List.Add(1); List.Add(2); List.Add(3); Int32[] values = (Int32[])List.ToArray(typeof(Int32)); 例2: ArrayList List = new ArrayList(); List.Add(1); List.Add(2); List.Add(3); Int32[] values = new Int32[List.Count]; List.CopyTo(values); 上面介绍了两种从ArrayList转换到数组的方法 例3: ArrayList List = new ArrayList(); List.Add( “string” ); List.Add( 1 ); //往数组中添加不同类型的元素 object[] values = List.ToArray(typeof(object)); //正确 string[] values = (string[])List.ToArray(typeof(string)); //错误 和数组不一样,因为可以转换为Object数组,所以往ArrayList里面添加不同类型的元素是不会出错的,但是当调用ArrayList方法的时候,要么传递所有元素都可以正确转型的类型或者Object类型,否则将会抛出无法转型的异常。5、ArrayList最佳使用建议 这一节我们来讨论ArrayList与数组的差别,以及ArrayList的效率问题 (1)ArrayList是Array的复杂版本 ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
(2)内部的Object类型的影响 对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。但是恰恰对于大多数人,多数的应用都是使用值类型的数组。
消除这个影响是没有办法的,除非你不用它,否则就要承担一部分的效率损失,不过这部分的损失不会很大。 (3)数组扩容 这是对ArrayList效率影响比较大的一个因素。
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如。
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//for
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
//for each
for(Integer i : list){
System.out.println(i);
}
//iterator
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//array
Integer[] array = new Integer[list.toArray().length];
list.toArray(array);
// for(int i=0; i<array.length; i++){
// System.out.println(array[i]);
// }
for(Integer i : array){
System.out.println(i);
}
}
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.595秒