Java基础:List接口中特有方法\LinkedList
来源:互联网 发布:淘宝助理自定义打印 编辑:程序博客网 时间:2024/05/16 05:14
List的特有方法
1.add(int index , object obj)
2.get(int index)
3.set(index obj)
4.remove(int index)
add在列表指定位置插入指定元素:
public class demo{ public static void main(String[] args){ //创建一个list集合 List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); //注意制定索引添加元素不能越界 list.add(5,"w"); //替换指定索引的元素,不能替换超出集合长度的索引 list.set(1,L); Object object = list.get(3); Syatem.out.println(object+"----get方法") System.out.println(list); //利用list中的get方法遍历集合 for(i = 0; i < list.size();i++){ System.out.println(list.get(i)); } //被索引删除指定位置的元素 list.remove(1); } }
LinkedList
数组实现:
特点: 查询快,增删慢;
查询: 依赖下标查询;
增删: 要把插入元素位置后的所有元素向后移动一位(删除时向前移动一位)
创建数组是默认10个位置,当要保存11个值的时候,系统会创建一个新数组长度为原来的1.5倍.(容易产生内存垃圾)
链表实现:
特点: 查询慢,增删快;
1.链表中的元素保存的是上下元素的地址,通过这个地址可以找到上下元素.
2.在进行查找的时候,先判断被查找的元素距离头近还是尾近.
3.如果头近就从头位置一个一个向下查找(通过保存地址)
4.增删时直接找到元素的位置,并重新保存一下上下元素地址.后面元素的位置都保持不动.
应用: 当查询功能多的时候用ArrayList
当增删元素多的时候用LinkedList
LinkedList的方法
需求:将e.f添加到a.b.c.d的首尾
public class Demo{ public static void main(String[] args){ //创建一个LinkedList LinkedList linkedlist = new Linledlist(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); //从集合头\尾添加.addFirst\addLast linkedlist.addFirst("e"); linkedlist.addLast("f"); System.out.println(linkedlist); //获取头尾元素 System.out.println(linkedlist.getFirst()); System.out.println(linkedlist.getLast()); } }
需求: 如果数组中有”b”这个元素 就添加”Oh-Yes”这个元素
public class Demo{ public static void fun2() { List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); //获取集合中的迭代器 //告诉迭代器集合的长度为4 长度就是固定的 /* Iterator iterator = list.iterator(); //循环遍历 while (iterator.hasNext()) { if (iterator.next().equals("b")) { //这里会发生并发修改异常: //解决方案 list.add("Oh-yes"); iterator.add } } System.out.println(list); */ //创建一个获取list中的ListIterator ListIterator listIterator = list.listIterator(); while (listIterator.hasNext()) { if (listIterator.next().equals("b")) { //迭代器迭代时不能直接使用集合去添加新元素,要让迭代器去添加 listIterator.add("Oh-Yes"); } } //注意:一般在对集合迭代的时候,不要轻易去改变集合长度 //容易发生修改异常(解决方法 使用迭代器自己的添加方法) System.out.println(list); }}
需求:在集合中储存”a”“a”“a”“b”“b”“b”“c”“c”“c”,要求去除重复元素
public class Demo{ public static void fun3() { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("a"); list.add("b"); list.add("b"); list.add("b"); list.add("c"); list.add("c"); list.add("c"); //创建一个新集合 ArrayList newlist = new ArrayList(); //遍历集合 Iterator iterator = list.iterator(); while (iterator.hasNext()) { //取出每一个元素 Object next = iterator.next(); //判断新集合中包含不包含这个元素 //不包含就添加进去 if (!newlist.contains(next)) { newlist.add(next); } } //打印新集合查看结果 System.out.println(newlist); } }
需求:在集合中存储6个学生:分别有两个涵涵 18岁 两个凉凉 16岁 两个星星 80岁
public class Person {private String name;private int age;public Person() { // TODO Auto-generated constructor stub}public Person(String name, int age) { super(); this.name = name; this.age = age;}public String getName() { return name;}public void setName(String name) { this.name = name;}public int getAge() { return age;}public void setAge(int age) { this.age = age;}@Overridepublic String toString() { return "Person [name=" + name + ", age=" + age + "]";}
}
public class Student extends Person { public Student() { } public Student(String name, int age) { super(name, age); }// 重写equals方法(用来判断对象的名字 和 年龄)// 原来系统equals方法比较的是 地址// 但是比较地址 对于咱们的需求 无法满足// 所以要按着咱们的需求 来重写equals方法@Override // 重写方法名完全一致public boolean equals(Object obj) { // student1 和 student2 // this.name 和 obj.name比较 // 传进来的参数 需要向下转型 才能getName Student student2 = (Student) obj; // 这里调用是谁的equals 方法 // this.getName()是字符串 // 对象点方法 这个equals 方法是谁的? 那肯定是字符串的 return this.getName().equals(student2.getName()) && this.getAge() == student2.getAge();}}public static void fun4(ArrayList list) { ArrayList newList = new ArrayList(); Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object next = iterator.next(); //核心:包含判断 //contains方法底层代码 依赖 equals方法 //equals方法 是基类的 比较是地址是否相同 //字符串比较时用.equals //contains:是否包含次元素 if (!newList.contains(next)) { newList.add(next); } } System.out.println(newList); }public static void fun5() { //需求:在集合中存储6个学生:分别有两个涵涵 18岁 两个凉凉 16岁 两个星星 80岁 //去除重复的 //封装去重复值的方法 ArrayList list = new ArrayList(); list.add(new Student("涵涵",18)); list.add(new Student("涵涵",18)); list.add(new Student("凉凉",16)); list.add(new Student("凉凉",16)); list.add(new Student("星星",8)); list.add(new Student("星星",8)); //调用封装好的方法 fun4(list); //集合中的元素(学生) 地址一样吗? //如何解决 }
阅读全文
0 0
- Java基础:List接口中特有方法\LinkedList
- List接口中特有方法
- Java LinkedList特有方法
- List接口中特有方法--074
- 15.3 List接口特有方法
- 3.List接口特有的方法
- LinkedList特有方法
- linkedList特有的方法
- java集合框架中几个接口的常用方法(List,LinkedList,Map,Iterator)
- LinkedList链表特有方法
- Java基础--集合List-LinkedList
- java中List,ArrayList,LinkedList的常用方法
- Java集合之LinkedList(实现List接口)
- Java_基础—LinkedList的特有功能
- 黑马程序员-java基础-List集合的特有功能
- 黑马程序员-java基础-List集合的特有遍历功能
- 黑马程序员,LinkedList:特有方法。即练习
- 黑马程序员-LinkedList 特有方法学习日记
- c++ udp的socket通信使用jsoncpp传输
- R || 高斯混合模型GMM
- Capstone训练营第九天
- git创建版本库
- 简化路径-LintCode
- Java基础:List接口中特有方法\LinkedList
- 堆和栈的笔记
- 职业转型的终极指南:从新手到专业的机器学习工程师
- ValueError: Cannot feed value of shape (1,) for Tensor u'Placeholder:0', which has shape '(1, 1)'
- 装配一个对象 dataSource 对象 spring 火推03
- PC浏览器播放m3u8
- K分类算法
- 面向对象编程有三大特性:封装、继承、多态。
- POJ2299 线段树求逆序数