C# —— 数组的告诫查询方法

时间:2024-07-12 07:05:14

 查询数组元素的方法

1.通过索引值找元素 a[0]
2.通过循环进行遍历 查询数组的每一个元素
int[] a1 = new int[] { 1, 2, 3 };
Console.WriteLine(a1[0]);

// 通过循环进行遍历 查询数组的每一个元素
for (int i = 0; i < a1.Length; i++)
{
     // Console.WriteLine(a1[i]);
}
 3 indexOf() 获取元素的索引值
int[] a2 = { 28, 32, 16, 10, 31 };

查找满足小于16的第一个元素
 Find 参数1 目标数组,参数2是一个方法,返回满足的条件 一般是一个bool值 观察数组的元素是否满足这个条件
Find 方法的作用返回第一个满足的元素;

Console.WriteLine(Array.Find(a2, FindSmall16));

箭头函数 value 就是数组的每一个元素 value<16 满足的条件

Console.WriteLine(Array.Find(a2, value=>value<16));

找到第一个是奇数的元素

Console.WriteLine(Array.Find(a2, FindJiShu));

 查找一个仅能被3整除 又能被5整除的数 没有找到该条件数为默认值0

Console.WriteLine(Array.Find(a2,value=>value%3==0&&value%5==0));

字符串数组相关查找

string[] strs = { "123456", "123", "asd", "wasd" };
Console.WriteLine(Array.Find(strs, value => value.Length == 3));// 123
Console.WriteLine(Array.Find(strs, value => value.Length == 7));// null
string v = Array.Find(strs, value => value.Length == 7);
Console.WriteLine(string.IsNullOrEmpty(v));// true 判断字符串是不是null或者是空字符串

Findlndex 和 Find 用法一样,FindIndex找到满足条件的元素的索引 找不到的返回-1,Find找到满足条件的元素
            对比indexOf和findindex 
            indexOf 参数只能是数组的元素或者不是数组元素 不能是一个函数,没有遍
            历效果
            findIndex 不仅仅要找到满足条件的索引值,还有遍历效果
            如果箭头函数想{}带上需要把return带上。

Console.WriteLine(Array.FindIndex(a2,value =>
{
    return value <= 30;
}));

 FinLast() 从后面往前查询第一个满足条件的元素

Console.WriteLine(Array.FindLast(a2,value=>value>=18));

FindLastIndex() 从后面往前查询第一个满足这个条件的元素索引值

Console.WriteLine(Array.FindLastIndex(a2,value => value >=18));

FindAll() 找到所有满足条件的元素 返回值是一个数组

int[] a3 = Array.FindAll(a2, value => value % 2 == 0);
Console.WriteLine(string.Join(",",a3));// 把数组转成字符串

int[] ints = { 2, 4, 6 };

TrueForAll()判断一个数组元素是否都满足条件,如果都满足了 结果为true,只要有一个不满足 结果为false

Console.WriteLine(Array.TrueForAll(ints, value => value % 2 == 0));// true
ints[1] = 3;
Console.WriteLine(Array.TrueForAll(ints, value => value % 2 == 0));// false

判断数组中是否至少有一个满足条件的元素,(只要有一个满足了就为true)

Console.WriteLine(Array.Exists(ints, value => value % 2 == 0));// true
ints[0] = 5;
ints[2] = 7;
Console.WriteLine(Array.Exists(ints, value => value % 2 == 0));//false

首写字母都是大写
            以上方法都是通过Array方法 属于类.方法 () 属于静态方法
            对象.方法 () 非静态


            Array ArrayList List
            账号对象 name和psw属性,数组添加5个账号  输入一个账号和密码 判断当前是否能登陆成功
            exists
            {abmin,123} {admin1 123,123}
            admin 123

List<User> list = new List<User>();
for (int i = 0; i < 5; i++)
{
    User u1 = new User();
    u1.Name = "admin" + i;
    u1.Psw = i * 10 + "1";
    list.Add(u1);
}
string s1 = "admin";
string s2 = "301";

参数是函数写,满足条件的
            list是否存在满足条件的元素 value是数组的元素

Console.WriteLine(list.Exists(value => value.Name == s1 && value.Psw == s2)); 

class User
{
    public string Name { get; set; }
    public string Psw { get; set; }
}
public static bool FindJiShu(int value)
{
    return value % 2 != 0;
}
public static bool FindSmall16(int value) 
{
    // 1先遍历数组的每一个元素 2进行比较 3找到满足条件的元素之后返回出去
    // 参数value就是数组的每一个元素 不用再去遍历
    /*if (value < 16)
    {
        return true;
    }
    else
    {
        return false;
    }*/

    return value < 16; // true/false
}