8Eclipse使用 ArrayList,LinkedList
来源:互联网 发布:linux中的mount命令 编辑:程序博客网 时间:2024/05/13 12:31
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1. 对于Java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可。比如说:</span>
public static final int AGE_0F_PERSON = 20;
2. 在Java中声明final常量时通常都会加上static关键字,这样对象的每个实例都会访问唯一一份常量值。
3. IDE(Integrated Development Environment),集成开发环境。
1) NetBeans。http://netbeans.org/
2) JBuilder。
3) Intellij IDEA
4) Eclipse(日蚀、月蚀)
Eclipse常用配置
1、 智能提示.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
2、 格式化:括号自动换行
Windows-Preferences->Java-CodeStyle-->Formater>New
Braces nextline
ControlStatement=>general
快捷键 ctrl+shift+F
3、 去掉方法自动填充参数
Windows-Preferences->Java-Editor-ContentAssist-去掉Fill method arguments
快捷键
ctrl+shift+O 自动导入包
按住ctrl 点击对应的类,查看源码
alt+← 回到上一次代码
//* 注释 生成帮助文档 project -》Genrate javadoc
4. 集合中存放的依然是对象的引用而不是对象本身。
public class ArrayListTest5{public static void main(String[] args){ArrayList list = new ArrayList();list.add(new Point(2, 3));list.add(new Point(2, 2));list.add(new Point(4, 4));for(int i = 0; i < list.size(); i++){System.out.println(list.get(i));//调用Point toString方法
<span style="white-space:pre"></span>
}System.out.println(list);//调用list toString方法}}
5. ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象,实际上是构建一个空的Object类型的数组
public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { super(); this.elementData = EMPTY_ELEMENTDATA; }
6. 当增加元素时,首先确定数组容量(调用ensureCapacityInternal),如果数组容量超过10(DEFAULT_CAPACITY),则对数组进行扩容(grow),并将原数组copy到新的数组中。最后将新增加的元素放在新的数组末尾。(Java1.7、1.8中通过移位(>>1)进行扩容,实际上也相当于把长度变为原来的1.5倍。与1.6不同)
Add源码
/** * Appends the specified element to the end of this list. * * @param e element to be appended to this list * @return <tt>true</tt> (as specified by {@link Collection#add}) */ public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }
private void ensureCapacityInternal(int minCapacity) { if (elementData == EMPTY_ELEMENTDATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - elementData.length > 0) grow(minCapacity); }
private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0)//private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
7. 对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较高。
public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work return oldValue; }
8. 集合当中只能放置对象的引用,无法放置原生数据类型,我们需要使用原生数据类型的包装类才能加入到集合当中。
9. 集合当中放置的都是Object类型,因此取出来的也是Object类型,那么必须要使用强制类型转换将其转换为真正的类型(放置进去的类型)。
10. 关于ArrayList与LinkedList的比较分析
a) ArrayList底层采用数组(顺序表)实现,LinkedList底层采用双向链表实现。
b) 当执行插入或者删除操作时,采用LinkedList比较好。
c) 当执行搜索操作时,采用ArrayList比较好。
LinkedList源码:
public LinkedList() { }
public boolean add(E e) { linkLast(e); return true; }
void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; modCount++; }
private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }
- 8Eclipse使用 ArrayList,LinkedList
- 使用arraylist和linkedlist
- ArrayList与linkedList使用
- 小心使用ArrayList和LinkedList
- 小心使用ArrayList和LinkedList
- arraylist arraylist使用实例 linkedlist linkedlist源码解析 linkedlist和arraylist的区别
- arraylist linkedlist
- ArrayList&LinkedList
- arraylist linkedlist
- ArrayList/LinkedList
- LinkedList、ArrayList
- ArrayList & LinkedList
- ArrayList、linkedList
- ArrayList、LinkedList、Vector的使用和优化。
- java LinkedList和ArrayList使用测试 场景
- ArrayList和LinkedList区别及使用场景
- ArrayList LinkedList 的区别 以及使用场合
- java中ArrayList和LinkedList使用注意事项
- 手机游戏开发公司 - FuGenX技术
- Rstudio在centos下的安装
- 手机从哈林子弹节省人力
- 周期串~算法竞赛入门-基础篇(5.1.3)
- 网站访问日志看安全
- 8Eclipse使用 ArrayList,LinkedList
- python学习笔记6--fraction
- 【Python】通过网卡(网桥)名称获取mac地址,针对多网卡情况
- 求职技巧
- 死亡幻觉导演剪辑
- A Knight's Journey
- 改变listview中item选中时文字的颜色
- jquery 中 stop() 的用法
- easyui combobox text与value设置不同的值