GVKun编程网logo

在列表末尾放置null(用于在列表末尾添加一个元素的方法是)

12

关于在列表末尾放置null和用于在列表末尾添加一个元素的方法是的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ALTERTABLE,在nullnull列中设置null,PostgreSQL

关于在列表末尾放置null用于在列表末尾添加一个元素的方法是的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ALTER TABLE,在null null列中设置null,PostgreSQL 9.1、c# – 包含非null元素的列表最终包含null.同步问题?、C#LINQ OrderBy on nullable->始终在列表末尾设置空值、failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

在列表末尾放置null(用于在列表末尾添加一个元素的方法是)

在列表末尾放置null(用于在列表末尾添加一个元素的方法是)

我需要在的末尾放置空对象List。这是我为此目的所做的一个示例:

public static void main(String... args) {    List<String> strings = Arrays.asList(new String[]{"A", null, "B"});    for(String string : strings) {        System.out.println(string);    }    System.out.println("==================");    List<String> result = new ArrayList<String>();    List<String> nullStrings = new ArrayList<String>();    for(String string : strings) {        if(string != null) {            result.add(string);                 } else {            nullStrings.add(string);        }    }    result.addAll(nullStrings);    for(String string : result) {        System.out.println(string);    }}

我期待着一种更高效,更智能的方式来做到这一点。是否有可能在实际列表内交换,以便将空节点放置在末尾,这样我就不需要其他两个列表(nullStrings,结果)和额外的迭代。

更新资料

排序不适用于我的情况。我仅为测试目的而编写的此示例代码。实际上,我有不同类型的对象。同样,排序也会破坏位置。

说我有这个null, Obj2, Obj1,如果做排序之类的事情可能会发生Obj1, Obj2, null。但是我需要Obj2, Obj1,null

答案1

小编典典

您可以使用Collections.sort和自定义对它进行排序Comparator

这里是比较代码:

@Override public int compare(String left, String right) { if (left == right) {   return 0; } if (left == null) {   return 1; } if (right == null) {   return -1; } return 0; }

请注意,根据此值具有相等值的元素Comparator将不会重新排序。来自Collections.sort

这样的排序保证是稳定的:相等元素不会由于排序而重新排序。

ALTER TABLE,在null null列中设置null,PostgreSQL 9.1

ALTER TABLE,在null null列中设置null,PostgreSQL 9.1

我有一个表与非空列,如何设置一个null值在这一列作为默认值?

我的意思是,我想做这样的事情:

postgres=# ALTER TABLE person ALTER COLUMN phone SET NULL;

但它显示:

postgres=# ALTER TABLE person ALTER COLUMN phone SET NULL;
ERROR:  Syntax error at or near "NULL"
LINE 1: ALTER TABLE person ALTER COLUMN phone SET NULL;
ALTER TABLE person ALTER COLUMN phone DROP NOT NULL;

更多细节在手册:http://www.postgresql.org/docs/9.1/static/sql-altertable.html

c# – 包含非null元素的列表最终包含null.同步问题?

c# – 包含非null元素的列表最终包含null.同步问题?

首先,对标题感到抱歉 – 我无法弄清楚那个短而清晰的标题.

这是问题:我有一个列表List< MyClass>我总是添加新创建的MyClass实例的列表,如下所示:list.Add(new MyClass()).我不以任何其他方式添加元素.

然而,然后我用foreach迭代列表并发现有一些空条目.也就是说,以下代码:

foreach (MyClass entry in list)
    if (entry == null)
         throw new Exception("null entry!");

有时会抛出异常.
我应该指出list.Add(new MyClass())是从并发运行的不同线程执行的.我能想到的唯一考虑空条目的是并发访问.列表与LT;>毕竟,这不是线程安全的.虽然我仍然觉得奇怪的是它最终包含空条目,而不仅仅是在订购时没有提供任何保证.

你能想到其他任何原因吗?

此外,我不关心添加项目的顺序,我不希望调用线程阻止等待添加其项目.如果同步确实是问题,你能推荐一种简单的方法来异步调用Add方法,即创建一个委托,在我的线程继续运行其代码时处理它吗?我知道我可以为Add创建一个委托并在其上调用BeginInvoke.这看起来合适吗?

谢谢.

编辑:一个基于凯文的建议的简单解决方案:

public class AsynchronousList<T> : List<T> {

    private AddDelegate addDelegate;
    public delegate void AddDelegate(T item);

    public AsynchronousList() {
        addDelegate = new AddDelegate(this.AddBlocking);
    }

    public void AddAsynchronous(T item) {
        addDelegate.BeginInvoke(item,null,null);
    }

    private void AddBlocking(T item) {
        lock (this) {
            Add(item);
        }
    }
}

我只需要控制Add操作,我只需要这个用于调试(它不会在最终产品中),所以我只想快速修复.

谢谢大家的回答.

解决方法

列表与LT; T>只能同时支持多个读者.如果要使用多个线程添加到列表中,则需要先锁定对象.实际上没有办法解决这个问题,因为如果没有锁定,你仍然可以让某人从列表中读取而另一个线程更新它(或者多个对象同时尝试更新它).

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

您最好的选择可能是将列表封装在另一个对象中,并使该对象处理内部列表上的锁定和解锁操作.这样你就可以使你的新对象的“添加”方法异步,让调用对象以他们的快乐方式运行.任何时候你读它虽然你很可能仍然需要等待任何其他对象完成他们的更新.

C#LINQ OrderBy on nullable->始终在列表末尾设置空值

C#LINQ OrderBy on nullable->始终在列表末尾设置空值

如何解决C#LINQ OrderBy on nullable->始终在列表末尾设置空值?

是否有一种简单的方法,可以通过升序对可空值列表进行排序,并将空值放在列表末尾?就像一个选项之类的

如果没有,那么哪种方法最好:

  1. 编写我自己的排序lambda

    import Foundation
    import UIKit
    
    class MemberProfilePhotosViewController: UIPageViewController {
        
        private let profilePhotoURLs: [URL]
        private let profilePhotoViewControllers: [MemberProfilePhotoViewController]
        private var pageControl: UIPageControl?
        
        // MARK: - Initialization
        
        init(profilePhotoURLs: [URL]) {
            self.profilePhotoURLs = profilePhotoURLs
            profilePhotoViewControllers = profilePhotoURLs.map { (profilePhotoURL) -> MemberProfilePhotoViewController in
                MemberProfilePhotoViewController(profilePhotoURL: profilePhotoURL)
            }
            super.init(transitionStyle: .scroll,navigationorientation: .horizontal,options: nil)
        }
        
        required init?(coder: NSCoder) {
            fatalError()
        }
        
        // MARK: UIViewController
        
        override func loadView() {
            super.loadView()
            pageControl = UIPageControl(frame: CGRect.zero)
            pageControl!.numberOfPages = profilePhotoViewControllers.count
            self.view.addSubview(pageControl!)
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            dataSource = self
            delegate = self
            if let firstViewController = profilePhotoViewControllers.first {
                setViewControllers([firstViewController],direction: .forward,animated: true,completion: nil)
            }
        }
        
        override func viewWillLayoutSubviews() {
            super.viewWillLayoutSubviews()
            if let pageControl = pageControl {
                let pageControlSize = pageControl.size(forNumberOfPages: profilePhotoViewControllers.count)
                pageControl.frame = CGRect(
                    origin: CGPoint(x: view.frame.midX - pageControlSize.width / 2,y: view.frame.maxY - pageControlSize.height),size: pageControlSize
                )
            }
        }
        
        // MARK: Private Helpers
        
        private func indexOf(_ viewController: UIViewController) -> Int? {
            return profilePhotoViewControllers.firstIndex(of: viewController as! MemberProfilePhotoViewController)
        }
    }
    
    extension MemberProfilePhotosViewController: UIPageViewControllerDelegate {
        func pageViewController(_ pageViewController: UIPageViewController,didFinishAnimating finished: Bool,prevIoUsViewControllers: [UIViewController],transitionCompleted completed: Bool) {
            guard let selectedViewController = pageViewController.viewControllers?.first else { return }
            if let indexOfSelectViewController = indexOf(selectedViewController) {
                pageControl?.currentPage = indexOfSelectViewController
            }
        }
    }
    
    extension MemberProfilePhotosViewController: UIPageViewControllerDataSource {
        func pageViewController(_ pageViewController: UIPageViewController,viewControllerBefore viewController: UIViewController) -> UIViewController? {
            guard let viewControllerIndex = profilePhotoViewControllers.firstIndex(of: viewController as! MemberProfilePhotoViewController) else {
                return nil
            }
            let prevIoUsIndex = viewControllerIndex - 1
            guard prevIoUsIndex >= 0 else {
                return nil
            }
            guard profilePhotoViewControllers.count > prevIoUsIndex else {
                return nil
            }
            return profilePhotoViewControllers[prevIoUsIndex]
        }
        
        func pageViewController(_ pageViewController: UIPageViewController,viewControllerAfter viewController: UIViewController) -> UIViewController? {
            guard let viewControllerIndex = profilePhotoViewControllers.firstIndex(of: viewController as! MemberProfilePhotoViewController) else {
                return nil
            }
            let nextIndex = viewControllerIndex + 1
            let profilePhotoViewControllersCount = profilePhotoViewControllers.count
            guard profilePhotoViewControllersCount != nextIndex else {
                return nil
            }
            guard profilePhotoViewControllersCount > nextIndex else {
                return nil
            }
            
            return profilePhotoViewControllers[nextIndex]
        }
    }
    
    
  2. 仅对非null值进行排序,并在其后添加null值

    list.sort((v1,v2) => 
    {
       if (v1.HasValue && v2.HasValue) return v1.Commpareto(v2);
       else if (!v1.HasValue) return -1;
       else if (!v2.HasValue) return 1;
       else return 0;
    })
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

failed to parse: {

failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8

IDEA整合springboot与neo4j时出现这个问题

关于在列表末尾放置null用于在列表末尾添加一个元素的方法是的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ALTER TABLE,在null null列中设置null,PostgreSQL 9.1、c# – 包含非null元素的列表最终包含null.同步问题?、C#LINQ OrderBy on nullable->始终在列表末尾设置空值、failed to parse: {"row":[8,6,12,7,13,8,14],"meta":[null,null,null,null,null,null,null]}]} 11:46:29.8等相关知识的信息别忘了在本站进行查找喔。

本文标签: