java 集合

Posted 黄军勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 集合相关的知识,希望对你有一定的参考价值。

方法覆写

// 重写toSting方法

@Override

public String toString() {

// TODO Auto-generated method stub

 

return "name=" + name + ";age=" + age;

}

// 重写equals方法

 

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

Person p = null;

 

if (obj instanceof Person) {

// 需要强转

p = (Person) obj;

 

if (p.name.equals(this.name)) {

 

return true;

 

} else

return false;

} else

return false;

 

}

String使用    

 字符串的构造方法

//1.String(byte[] bytes)  通过字节数组来创建

byte[] b = {97,98,99}; //65 A

//2.String(byte[] bytes, int offset, int length)

 

       bytes - 要解码为字符的 byte

   offset - 要解码的第一个 byte 的索引

   length - 要解码的 byte

 String s2 = new String(b,1,2);

 

Length( ) 获取字符串长度

charAt( ) 获取特定位置的字符

 

Indexof (  )  获取特定字符的位置

 

indexOf(String s , int fromIndex) 需要在原字符串中搜索的字符串   fromIndex :从哪一个位置开始, 包含这个位置的

 

lastInsexOf ( ) 获取最后一个字符的位置

 

BOOLean 判断方法

endsWith(String str) 是否以指定字符结束

 

 isEmpty()是否长度为0 如:“” null V1.6

 

equals(Object anObject) 是否相等

 

equalsIgnoreCase(String anotherString) 忽略大小写是否相等

 

字符串的转换

//valueOf(char[] data, int offset, int count)  从指定的位置和长度来转。

//将字符串转为字符数组

toCharArray(  )

 

// String转为基本数据类型

        String s1 = "10";

Integer i  =new Integer(s1);

 

 * 其他方法

   * String replace(char oldChar, char newChar) 替换//前面是你需要替换的字符 ,后面是替换成什么

     String[] split(String regex) 切割

     String substring(int beginIndex)

     String substring(int beginIndex, int endIndex)截取字串

     String toUpperCase() 转大写

     String toLowerCase() 转小写

     String trim(  ) 去除空格// 用来去除头部和尾部的空格。

 

//1.查找字符串

        String filePath = "D:\\20161126\\day13\\Demo1.java";

    //s.indexOf("java"); //第一次出现的索引位置

    //s.indexOf("java", 2);//从指定的位置开始查找

 

StringBuffer: 符串缓存区 存在一个字符数组   默认会有一个大小 16 ,如果超了就容器大小就翻一倍。

 * 类似oc中的可变字符串。

 */

// StringBuffer :存字符的容器

 

 容器的功能

                   增加

           append(); //在字符串的后面追加

           insert(); //插入一个字符串。

    删除

          //delete(int start, int end)  // 删除某一段字符串。

//deleteCharAt(int index)     // 删除指定位置的字符串  

  修改

           replace(int start, int end, String str) 根据指定 的开始与结束索引值替代成指定的内容。

           reverse()   翻转字符串缓冲类的内容。  abc--->cba

 

                   setCharAt(int index, char ch)  把指定索引值的字符替换指定的字符。

                   substring(int start, int end)  根据指定的索引值截取子串。

           ensureCapacity(int minimumCapacity)  指定StringBuffer内部的字符数组长度的。

 

  查找

    indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。

  lastIndexOf(String str)

 

          capacity() 查看当前字符数组的长度。

          length()

 

          charAt(int index)

          toString()   把字符串缓冲类的内容转成字符串返回。

 

random()产生随机数  // 产生的是 大于等于 0.0 - 小于1.0之间的随机数

 */

*

 * System 的使用 :

 

 *   System 是系统类 主要用来获取系统的数据 它不能被实例化

 *   //对象呗回收会调用到这个方法中  多线程中执行的  Java中最少几个线程 : 两个 : 主线程 ,垃圾回收线程

@Override

protected void finalize() throws Throwable {

// TODO Auto-generated method stub

super.finalize();

System.out.println(this.name+"挂了。。");

 

//3.终止当前运行的jvm

//System.exit(0); //输入一个0或者非0的数都可以  里面 :runtime.exit(0);

 

//4.gc(  ); 运行垃圾回收器

 */

集合

 

集合:用来存放对象的容器,对象类型是任意的,长度是可变的。

集合比数组的优势:集合可以存任意类型的对象,长度是可变的。

数组:只能存同一种类型的变量,长度是固定的。

 

 

两种接口 1 List  接口 可以有重复的元素,有序

         2Set  接口  反之 无序

关键功能            

创建集合对象    Collection c = new ArrayList<>();

   add( ) 将指定对象存储到集合中

      addAll () 将指定集合中的元素 添加到该集合

     addLast () 最后面

     addFirst () 最前面

 

 remove()将指定对象从集合中删除

removeAll () 将指定集合 从该集合中删除

 

判断 isEmpty() 判断集合是否为空

containsAll  判断集合中是否包含指定集合

Contains        判断集合中是否包含指定对象

获取:  size()    返回集合容器的大小

转成数组 toArray()   集合转换数组

A.retainAll(B )  求集合A和集合B中的交集

 

List 只是个接口提供公有的方法中特有的方法:通过下标来操作元素,因为有序

 

   addint index, E element ) 将指定对象存储到集合中

      addAll () 将指定集合中的元素 添加到该集合

获取对象

      get(int index) 获取集合中指定位置的元素 用来修改集合中指定位置的值

 

.查找:

          indexOf(Object o)      查找指定对象在集合中第一次出现的位置。

 

          lastIndexOf(Object o)  返回查找集合中元素最后一次出现的位置

 

//删除指定索引位置的对象

        list.remove(  );

 

/*

 * 迭代器 :

 *    用来操作集合中的元素,增删 , 获取集合中的对象。

 *    集合中获取迭代器:通过集合中方法来获取 iterator()

 *    Iterator : 迭代器的超级接口  : 所有的迭代器接口都是继承Iterator

 *    

 *     迭代器中常用的方法:

 *       hasNext();  //判断当前指针指向的位置是否存在元素

 *       next();     // 获取当前指针指向元素的。 当这个方法被调用一次后指针就会下一次。

 

 *       remove(); // 删除最后一次出现对象  移除最后一次操作的元素

 

 

 

/*

 * listItreaor : 继承  Iteraor

 

   listItreaor : 特有的方法:

   

        hasPrevious() ; // 判断当前是否指针指向的上一个元素

        previous() ;   // 获取上一个元素

        previousIndex() //获取上一个元素索引位置

 

 //////////////////////////      

       add(E e) ;

    不能同时使用

       set(E e) ;

 

 *

 

 //三种方式遍历集合:

 //f方式一 : 将集合变为数组

 //方式二: get()方法获取 : 只能在list集合中使用, 只有list集合才有索引值。

 //通过迭代器   ListIterator类     next()

 

 迭代器使用的注意事项: 当你用迭代器来操作集合中的元素时,不要再用集合来操作元素

 例如  通过索引值 插入对象 这时候不要用 迭代器如上特有方法来操作  会造成指针异   

 

//

ArrayList 底层是维护一个Object的数组,默认容量是10,如果用量不够增加1.5

方法:trimToSize(  ) 调整用量和数据保持一致

      ensureCapcity () 自定用量

 

结构:collection 接口 跟接口 Collection 超接口

 *          ------> List

 *              ---->ArrayList  : 是存在一个数组(Object[]), 添加,删元素很慢,查找很块 ,元素在内存中是有序的。

 *              ---->LinkedList : 添加元素比较快 , 删,查找比较慢 ,元素在内存中是无序的

 

 Set集合

 

也是一个接口 继承Collection接口  特点 :无序的元素不能重复

 首先回调用对象的hashCode方法获取hashCode值,通过移位等运算获取一个位置

 

 情况1:如果位置上是没有元素,直接将元素存放在该位置。

 *    情况2: 如果位置上已经有了元素,用对象的equals方法和位置上已经存在的对象作比较,如果equals返回的是true那就代表是重复对象,

 *          就不存,如果返回的false将对象和原有的对象存在一起。

 

1.将集合变为数组  2.通过迭代器来遍历

 

//将集合变为字符串。

//将集合变为字符串。

s = Arrays.toString(set.toArray());

首先集合转不了字符串 先将集合转为数组 然后通过数组一个方法转为字符串

 

import java.util.HashSet; set集合的包

 

import java.util.TreeSet; set底层使用二叉树来实现的包

 TreeSet使用注意点:

 *     1.TreeSet添加对象的时候,如果对象有这个自然排序的特性,就按照这个自然排序进行排序。

 *     2.TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,运行的时候直接报错,如果需要存储对象,那么的对象的类必须要实现

 *       Comparable 接口  把元素的比较的规则定义在compareTo方法中。

 *       

 *     3..TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,并且没有实现Comparable 接口,那么这个时候就需要创建

 *     一个TreeSet的时候传入一个比较器。

 

使用注意:

1.如果添加的元素存在自然排序的特性,那么存入的元素会通过自然排序进行排序

2.如果添加的元素,不具备自然排序的特性,那么这个时候必须要实现Comparable接口

将元素的比较规则定义到comparTo方法中

 comparTo的比较规则: 返回一个0,负数或正数 ,分别表示相等,小于和大于

3.如果添加的元素,不具备自然排序的特性,又没有实现Comparable接口 ,这个时候需要写在创建TreeSet对象是传一个比较器。

 *          

 *           比较器的定义方式:

 *               自定义一个类实现:Comprator接口

 *               

 *                同实现Compratorcompar(Object o1 ,Objecto1)来指定元素比较的规则。

 *                规则:返回一个0,负数或正数 ,分别表示相等,小于和大于。

 *            

 *           TreeSet:底层是使用二叉树来存放数据的。

小就翻一倍。

 * 类似oc中的可变字符串。

 */

// StringBuffer :存字符的容器

 

 容器的功能

                   增加

           append(); //在字符串的后面追加

           insert(); //插入一个字符串。

    删除

          //delete(int start, int end)  // 删除某一段字符串。

//deleteCharAt(int index)     // 删除指定位置的字符串  

  修改

           replace(int start, int end, String str) 根据指定 的开始与结束索引值替代成指定的内容。

           reverse()   翻转字符串缓冲类的内容。  abc--->cba

 

                   setCharAt(int index, char ch)  把指定索引值的字符替换指定的字符。

                   substring(int start, int end)  根据指定的索引值截取子串。

           ensureCapacity(int minimumCapacity)  指定StringBuffer内部的字符数组长度的。

 

  查找

    indexOf(String str, int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。

  lastIndexOf(String str)

 

          capacity() 查看当前字符数组的长度。

          length()

 

          charAt(int index)

          toString()   把字符串缓冲类的内容转成字符串返回。

 

random()产生随机数  // 产生的是 大于等于 0.0 - 小于1.0之间的随机数

 */

*

 * System 的使用 :

 

 *   System 是系统类 主要用来获取系统的数据 它不能被实例化

 *   //对象呗回收会调用到这个方法中  多线程中执行的  Java中最少几个线程 : 两个 : 主线程 ,垃圾回收线程

@Override

protected void finalize() throws Throwable {

// TODO Auto-generated method stub

super.finalize();

System.out.println(this.name+"挂了。。");

 

//3.终止当前运行的jvm

//System.exit(0); //输入一个0或者非0的数都可以  里面 :runtime.exit(0);

 

//4.gc(  ); 运行垃圾回收器

 */

集合

 

集合:用来存放对象的容器,对象类型是任意的,长度是可变的。

集合比数组的优势:集合可以存任意类型的对象,长度是可变的。

数组:只能存同一种类型的变量,长度是固定的。

 

 

两种接口 1 List  接口 可以有重复的元素,有序

         2Set  接口  反之 无序

关键功能            

创建集合对象    Collection c = new ArrayList<>();

   add( ) 将指定对象存储到集合中

      addAll () 将指定集合中的元素 添加到该集合

     addLast () 最后面

     addFirst () 最前面

 

 remove()将指定对象从集合中删除

removeAll () 将指定集合 从该集合中删除

 

判断 isEmpty() 判断集合是否为空

containsAll  判断集合中是否包含指定集合

Contains        判断集合中是否包含指定对象

获取:  size()    返回集合容器的大小

转成数组 toArray()   集合转换数组

A.retainAll(B )  求集合A和集合B中的交集

 

List 只是个接口提供公有的方法中特有的方法:通过下标来操作元素,因为有序

 

   addint index, E element ) 将指定对象存储到集合中

      addAll () 将指定集合中的元素 添加到该集合

获取对象

      get(int index) 获取集合中指定位置的元素 用来修改集合中指定位置的值

 

.查找:

          indexOf(Object o)      查找指定对象在集合中第一次出现的位置。

 

          lastIndexOf(Object o)  返回查找集合中元素最后一次出现的位置

 

//删除指定索引位置的对象

        list.remove(  );

 

/*

 * 迭代器 :

 *    用来操作集合中的元素,增删 , 获取集合中的对象。

 *    集合中获取迭代器:通过集合中方法来获取 iterator()

 *    Iterator : 迭代器的超级接口  : 所有的迭代器接口都是继承Iterator

 *    

 *     迭代器中常用的方法:

 *       hasNext();  //判断当前指针指向的位置是否存在元素

 *       next();     // 获取当前指针指向元素的。 当这个方法被调用一次后指针就会下一次。

 

 *       remove(); // 删除最后一次出现对象  移除最后一次操作的元素

 

 

 

/*

 * listItreaor : 继承  Iteraor

 

   listItreaor : 特有的方法:

   

        hasPrevious() ; // 判断当前是否指针指向的上一个元素

        previous() ;   // 获取上一个元素

        previousIndex() //获取上一个元素索引位置

 

 //////////////////////////      

       add(E e) ;

    不能同时使用

       set(E e) ;

 

 *

 

 //三种方式遍历集合:

 //f方式一 : 将集合变为数组

 //方式二: get()方法获取 : 只能在list集合中使用, 只有list集合才有索引值。

 //通过迭代器   ListIterator类     next()

 

 迭代器使用的注意事项: 当你用迭代器来操作集合中的元素时,不要再用集合来操作元素

 例如  通过索引值 插入对象 这时候不要用 迭代器如上特有方法来操作  会造成指针异   

 

//

ArrayList 底层是维护一个Object的数组,默认容量是10,如果用量不够增加1.5

方法:trimToSize(  ) 调整用量和数据保持一致

      ensureCapcity () 自定用量

 

结构:collection 接口 跟接口 Collection 超接口

 *          ------> List

 *              ---->ArrayList  : 是存在一个数组(Object[]), 添加,删元素很慢,查找很块 ,元素在内存中是有序的。

 *              ---->LinkedList : 添加元素比较快 , 删,查找比较慢 ,元素在内存中是无序的

 

 Set集合

 

也是一个接口 继承Collection接口  特点 :无序的元素不能重复

 首先回调用对象的hashCode方法获取hashCode值,通过移位等运算获取一个位置

 

 情况1:如果位置上是没有元素,直接将元素存放在该位置。

 *    情况2: 如果位置上已经有了元素,用对象的equals方法和位置上已经存在的对象作比较,如果equals返回的是true那就代表是重复对象,

 *          就不存,如果返回的false将对象和原有的对象存在一起。

 

1.将集合变为数组  2.通过迭代器来遍历

 

//将集合变为字符串。

//将集合变为字符串。

s = Arrays.toString(set.toArray());

首先集合转不了字符串 先将集合转为数组 然后通过数组一个方法转为字符串

 

import java.util.HashSet; set集合的包

 

import java.util.TreeSet; set底层使用二叉树来实现的包

 TreeSet使用注意点:

 *     1.TreeSet添加对象的时候,如果对象有这个自然排序的特性,就按照这个自然排序进行排序。

 *     2.TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,运行的时候直接报错,如果需要存储对象,那么的对象的类必须要实现

 *       Comparable 接口  把元素的比较的规则定义在compareTo方法中。

 *       

 *     3..TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,并且没有实现Comparable 接口,那么这个时候就需要创建

 *     一个TreeSet的时候传入一个比较器。

 

使用注意:

1.如果添加的元素存在自然排序的特性,那么存入的元素会通过自然排序进行排序

2.如果添加的元素,不具备自然排序的特性,那么这个时候必须要实现Comparable接口

将元素的比较规则定义到comparTo方法中

 comparTo的比较规则: 返回一个0,负数或正数 ,分别表示相等,小于和大于

3.如果添加的元素,不具备自然排序的特性,又没有实现Comparable接口 ,这个时候需要写在创建TreeSet对象是传一个比较器。

 *          

 *           比较器的定义方式:

 *               自定义一个类实现:Comprator接口

 *               

 *                同实现Compratorcompar(Object o1 ,Objecto1)来指定元素比较的规则。

 *                规则:返回一个0,负数或正数 ,分别表示相等,小于和大于。

 *            

 *           TreeSet:底层是使用二叉树来存放数据的。

以上是关于java 集合的主要内容,如果未能解决你的问题,请参考以下文章

廖雪峰Java5Java集合-1Java集合简介-1Java结合简介

java 遍历集合的时候对集合进行操作

java集合是啥?

Java 集合类

Java集合源码剖析Java集合框架

Java集合