C# 堆栈 - Contains() 方法
C# 堆栈 Contains() 方法用于判断堆栈中是否存在元素。
该方法执行线性搜索,因此复杂度为 O(n),其中 n 为元素数量。
语法
以下是 C# 堆栈 Contains() 方法的语法 -
public virtual bool Contains (object? obj);
参数
此方法接受一个 obj 参数,表示堆栈中的元素。该值可以为 null。
返回值
如果在堆栈中找到该元素,则此方法返回 true。否则,返回 false。
示例 1:使用 Contains() 方法
以下是使用 Contains() 方法在堆栈中查找元素的基本示例 -
using System; using System.Collections; class Example { public static void Main() { Stack myStack = new Stack(); // 将元素插入到堆栈中 myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Push(5); int element = 4; bool res = myStack.Contains(element); Console.WriteLine($"Is the {element} available?: {res}"); } }
输出
以下是输出 -
Is the 4 available?: True
示例 2:检查字符串是否可用
让我们看另一个使用 Contains() 方法的示例,以检查字符串是否在堆栈中可用 -
using System; using System.Collections; class Example { public static void Main() { Stack myStack = new Stack(); myStack.Push("Hello"); myStack.Push("tutorialspoint"); myStack.Push("India"); myStack.Push("Good to know"); string element = "India"; bool res = myStack.Contains(element); Console.WriteLine($"Is the {element} available?: {res}"); } }
输出
以下是输出 -
Is the India available?: True
示例 3:在 Stack 中检查 Person 的详细信息
以下示例创建了一个 Person 对象。在这里,我们使用 Contains() 方法来验证 Person 的详细信息是否可用 -
using System; using System.Collections.Generic; class Person { public string Name { get; set; } public int Age { get; set; } public Person(string name, int age) { Name = name; Age = age; } public override string ToString() { return $"Name: {Name}, Age: {Age}"; } // 重写 Equals 和 GetHashCode 来按值而不是引用比较对象 public override bool Equals(object obj) { if (obj is Person other) { return Name == other.Name && Age == other.Age; } return false; } public override int GetHashCode() { return HashCode.Combine(Name, Age); } } class Example { static void Main() { // 创建一个 Person 对象堆栈 Stack<Person> people = new Stack<Person>(); // 将 Person 对象推送到堆栈 people.Push(new Person("Aman", 25)); people.Push(new Person("Gupta", 24)); people.Push(new Person("Vivek", 26)); Console.WriteLine("People stack before Contains:"); foreach (var person in people) { Console.WriteLine(person); } // 使用 contains 方法 bool res = people.Contains(new Person("Aman", 25)); Console.Write("Is this object avialable: " + res); } }
输出
以下是输出 -
People stack before Contains: Name: Vivek, Age: 26 Name: Gupta, Age: 24 Name: Aman, Age: 25 Is this object avialable: True