Android之JAVASe基础篇-面向对象-类集(十)
16lz
2021-01-26
前言–java类集是开发中用得最多的了吧,方便,功能强。
一、类集框架主要接口
接口的继承关系:
1.List接口—List中允许有重复的数据
List
class Student{ private String name; private String age; //无参和有参的构造 getter/setter...}public class Test{ public static void main(String[] args){ Collection c=new ArrayList(); c.add(new Student("刘欢",10));//Object obj=new Student("刘欢",10); c.add(new Student("赵四",11)); c.add(new Student("王五",12)); //把集合转为数组 Object[] o=c.toArray(); for(int i=0;iout.println(o[i]); //如果要根据集合中的名字取值则: Student s=(Student)o[i];//向下转型即可 System.out.println("姓名:"s.getName()+'\t'+"年龄:"+s.getAge()); } //直接使用迭代(遍历)输出 Iterator it=c.iterator(); if(it.hasNext()){ System.out.println(it.next());//遍历输出 //如果想直接输出名字或者年龄,则需要向下转型 Student stu=(Student)it.next(); System.out.println("姓名:"stu.getName()+'\t'+"年龄:"+stu.getAge()); } }}
1.1.LinkedList
LinkedList:表示的是一个链表的操作类.
import java.util.LinkedList ;public class LinkedListDemo02{ public static void main(String args[]){ LinkedList link = new LinkedList() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.println("1-1、element()方法找到表头:" + link.element()) ; System.out.println("1-2、找完之后的链表的内容:" + link) ; System.out.println("2-1、peek()方法找到表头:" + link.peek()) ; System.out.println("2-2、找完之后的链表的内容:" + link) ; System.out.println("3-1、poll()方法找到表头:" + link.poll()) ; System.out.println("3-2、找完之后的链表的内容:" + link) ; }};
1.2Queue接口:是Collection的子接口,定义如下:public interface Queue extends Collection
import java.util.LinkedList ;public class LinkedListDemo03{ public static void main(String args[]){ LinkedList link = new LinkedList() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.print("以FIFO的方式输出:") ; for(int i=0;i<=link.size()+1;i++){ System.out.print(link.poll() + "、") ; } }};
2.Set接口–不能加入重复的元素
Set接口常用的子类:
2.1散列存放(无序):HashSet
import java.util.HashSet ;import java.util.Set ;public class HashSetDemo01{ public static void main(String args[]){ Set allSet = new HashSet() ; allSet.add("A") ; // 增加内容 allSet.add("B") ; // 增加内容 allSet.add("C") ; // 增加内容 allSet.add("C") ; // 重复内容 allSet.add("C") ; // 重复内容 allSet.add("D") ; // 增加内容 allSet.add("E") ; // 增加内容 System.out.println(allSet) ; }};
2.2有序存放(可自动排序):TreeSet
import java.util.TreeSet ;import java.util.Set ;public class TreeSetDemo01{ public static void main(String args[]){ Set allSet = new TreeSet() ; allSet.add("C") ; // 增加内容 allSet.add("C") ; // 重复内容 allSet.add("C") ; // 重复内容 allSet.add("D") ; // 增加内容 allSet.add("B") ; // 增加内容 allSet.add("A") ; // 增加内容 allSet.add("E") ; // 增加内容 System.out.println(allSet) ; }};
深入:使用hashCode(),equals(),取消掉重复元素,
import java.util.Set ;import java.util.HashSet ;class Person{ private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public boolean equals(Object obj){ // 覆写equals,完成对象比较 if(this==obj){ return true ; } if(!(obj instanceof Person)){ return false ; } Person p = (Person)obj ; // 向下转型 if(this.name.equals(p.name)&&this.age==p.age){ return true ; }else{ return false ; } } public int hashCode(){ return this.name.hashCode() * this.age ; // 定义一个公式 } public String toString(){ return "姓名:" + this.name + ";年龄:" + this.age ; }};public class RepeatDemo02{ public static void main(String args[]){ Set allSet = new HashSet() ; allSet.add(new Person("张三",30)) ; allSet.add(new Person("李四",31)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("赵六",33)) ; allSet.add(new Person("孙七",33)) ; System.out.println(allSet) ; }};
更多相关文章
- adnroid:layout_weight
- 数组资源
- Android(安卓)5.1开机自启动示例程序(Activity,APP包启动)
- LinearLayout 分割线
- Android框架ButterKnife的使用详解,butterknife8.x.x版本的使用方
- robotium原理之获取WebElement元素
- android之ListView和BaseAdapter的组合使用
- Android零碎知识总结
- android网易跟帖盖楼布局